AN ARGUS SPECIALIST PUBLICATION
FEBRUARY 1986
£I.OO
YOUR BEST INDEPENDENT COMMODORE MAGAZINE
your i
* J
PROGRAM PROTECTION -
KEEP YOUR PROGRAMS SAFE
I
COMMODORE 64
DRAGONSKULLE", "OUTLAWS", "BLACKWYCHE", "IMHOTEP" recommended retail price
£9.95 inc VAT. Available from W.H.SMITHS, BOOTS, J.MENZIES, WOOLWORTHS
and all good software retail outlets. Also available from
ULTIMATE FLAY THE GAME, The Green, Ashby-de-la-Zouch, Leicestershire LE6 5JU
(P&P are included) Tel: 0530 411485
FEBRUARY 1986
VOLUME 2
NUMBER 5
Editor:
Sluari Cooke
Assistant Editor;
Marie Curry
Advertisement Manager:
Mike Segrue
Advertisement Copy
Control:
Laura Champion
Group Editor:
Dave Bradshaw
Group Managing
Editor:
Wendy Palmer
Managing Director;
Peter Welham
Origination:
Ebony Typesetting
Design:
Argus Design
Editorial & Advertisement Office
No 1 Golden Square,
London W1R 3AB
Telephone 01 -437 0626
Telex 8811896
Your Commodore is a monthly
magazine appearing on the first
Friday of each month.
Distribution by Argus Press
Sales & Distribution Ltd 12-18
Paul Street. London EC2A 4JS
Printed by Alabaster Passmore
& Sons Ltd, Tovil, Maidstone,
Kent
Subscription rates upon
application to Your
Commodore Subscriptions
Department, Infonet Ltd. Times
House. 179 The Marlowes.
Hemel Hempstead, Herts HP1
IBB
The contents of this publication
including all articles, designs,
plans, drawings and programs
and all copyright and other
intellectual property rights
therein belong lo Argus
Specialist Publications Limited.
All rights conferred by the Law
of Copyright and other
intellectual property rights and
by virtue of international
copyright conventions are
specifically reserved to Argus
Specialist Publications Limited
and any reproduction requires
the prior written consent of the
Company. e 1986 Argus
Specialist Publications Limited
■ Count on Your Commodore 7
Your 64 learns lo add up.
■ Stop Thief! 12
Gel those programs under lock and key.
■ Interrupts 32
Introducing IRQ interrupts.
■ The Beat Goes On 43
Switch on to Syntron's Digidrum.
■ Now Hear This 44
Rainbird's Music System under the microscope.
■ Gremlin Grilling 52
Inside a little monster's office.
■ Do You Need Your Head Examined? 86
Dave Crisp reviews a utility to re-align your disk drive.
■ Mach 4 / 8
Steve Carrie adds a Machine Code disassembler.
■ Froggy 40
More to add to your arcade game design.
■ Language Lab - Pilot 54
Make your 64 bilingual.
■ Build a Better Basic 62
Your Basic grows still more.
■ Programming Projects 7Q
Archaeology and micros do mix.
REGULARS ^^^B
■ Data' Statements 4
■ Scratch Pad 1 0
■ Teacher's Pet 30
■ In Arcadia 36
■ Game of the Month 38
■ Action Replay 46
■ Missives 53
■ Sense of Adventure 72
■ Communications Corner 74
■ Easy Entry 84
■ Listings 87
■ Magician's Ball Competition 16
A chance to win Global Software's new adventure.
■ Sprite Ideas 82
Create a sprite and win £10.
| GAMES AND UTILITIES \
■ Break The Speed Limit 22
High speed tape for your C-16 and Plus/4.
■ Spike - Programmer of the Year 56
A great game from a great programmer.
Soft in the Head-
YES, IT HAD TO HAPPEN SOME TIME.
Superman has got fed up of doing his
quick change act in the confines of a
phone box and will now be executing this
incredible feat of contortion inside your
computer. Beyond has recently launched
Superman The Computer Came, which
features Superman, on the side of good,
fighting Darkseid for control of a metro-
polis.
According to Beyond, the game con-
tains a minimum of rules and is
punctuated with breathtaking animated
sequences. It's not a bird or a plane but it
is £9.95.
Also in Beyond's autumn release
package were EnigmaForce, the sequel to
Shadowfire and Spy vs Spy: The Island
Caper, sequel to Spy vs Spy (as if you
hadn't guessed). Both cost £9.95 on
cassette.
Another superman, international
goalkeeper Ray Clemence, has put his
stamp of approval on Macmillan
Software's new release World Cup
Soccer. The package contains two
programs and a book which provide
information on the skills techniques and
secrets of some of the world's top players.
Goalie Ray commented: "World Cup
Soccer is a must for any serious and
dedicated soccer fan. Once you've
mastered this you can sit back and watch
the 1986 World Cup through the eyes of a
real professional."
Five for under a tenner
STATEMENTS
v--
at
Feargal and friend Casey (ones on
Domark. meanwhile, has decided lo
try and scare us all by launching Friday (he
13th. The Computer Came, featuring a
mad fiend called |ason who wanders
round a holiday camp trying to get his
homicidal way with all the innocent
campers. Your job is, of course, to save
them but mind you don't panic as this
seems to infuriate the psychopath. £8.95
on cassette and £11.95 on disk, probably a
game not to be played in the dark. The
sadist's Terrormolinosl
Ariolasoft has launched a new range of
software for the autumn which is unusual
because the disk versions are under flo-
at £9.95. Frank Brunger, marketing and
sales director, said: "The cost may be
lower but the quality certainly isn't." The
Cassette versions are £7.95 and the new
titles are: Axis Assassin, D-Bug, Bug Blitz,
Saucer Attack. All are available
Quicksilva has come up with an arcade
strategy game for the 64 called
Deathwake, which features you as a
brilliant admiral trying to rebuild your
shattered forces so that you can destroy
the enemy's special research lab. hidden
in the depths of a mountainside. If you
don't, they will finish developing the
Ultimate Weapon - an atomic bomb.
(Hasn't some one already developed It?) If
you want to gain lost territory from the
euil Alliance then you'll have to fork out
£7.95 for the privilege.
Ultimate has two new titles for the
C64; Dragon Skulle and Outlaws -
shouldn't that be Autlors? They both cost
£9.95 on the C64 and are embellished with
Ultimate's unmistakable brand of art
work.
Hewson Consultants want you to let
the train take the strain and buy Southern
Belle for the C64. This steam locomotive
simulator is said by its makers to be for the
more sophisticated' game player and it is
rumoured that 'railway enthusiasts have
even been buying computers specifically
to sample its delight.' Holy smoke!
On to more serious software, and
Impex has produced a program called
Font Factory which is aimed at improving
the output from a dot matrix printer. It
reads any standard Commodore ASCII
file, automatically formats and prints it.
And you get a choice of eight different
typefaces. It incorporates control of line
width and spacing and justification. Also
on the disk is a program called Sign Writer
which allows you lo produce banners
using letters a foot high. You get both
programs for £19.95.
Impex has also released Fantastic Filer
and Screen Dumper 64. Both these
programs are £12.95 each and available on
disk only.
In Touch
MICRONET HAS MOVED ITSELF INTO
the glamorous world of pop music. Feargal
Sharkey appeared on Celebrity Chatline
and was greeted with an enormous
response from Micronet members.
Feargal has himself been a member of
Micronet for over a year and is very
impressed with the service, saying: "Most
of all I find it good relaxation." He also
loves the Celebrity Chatline in particular.
"I think it's very entertaining." he raved.
"It's certainly a lot more entertainingthan
most of the programmes on TV at the
moment. I'd rather watch Chatline than
Coronation Street.*' Obviously an
Eastenders fan.
Micronet members have also been
making an effort to help the survivors of
(he Mexican earthquake. In the first
month of the Mexican Aid Appeal they
raised over £180. Donations should be
made payable to Mexican Aid and sent to
the address below. Micronet members
should call page "800119836
News
tangled wires
Teletext Adapter tor the C64
New Philips monitor
Rainbird will also be producing soft-
ware for 16 bit computers including
Commodore's latest little offering, the
Amiga. Firebird will continue to burn
brightly and independently producing
games for 8 bit machines.
For those who are confused about the
function of the new Data Protection Act
1984. the Data protection Registrar has
produced a handy question and answer
booklet to try and clarify the most
important points. The Act is designed to
protect individuals rights by allowing
them to have access to personal inform-
ation which various organisations may
have on file. Subjects covered range from
personal data held at schools and
universities to registration for groups of
companies.
If you're fed up with seeing those
horrible tangled up wires around your
computer then Conblock Electrical
Limited may have come up with the
solution to your problem. Now available
are two new adaptors, one of which can
take up to six plugs, the other up to four.
Both are smaller and lighter than
traditional ones and they certainly look a
lot better, too.
Both come complete with plugs and
are for use in any standard 13 amp socket.
They also conform to the Electrical Equip-
ment Safety Regulations 1985.
jm_ Piii
5?»
mm^^ — "
-» |W '»T. 1-
Hard Lines
MORLEY ELECTRONICS HAS NOW
announced the availability of a Teletext
Adapter for the C64. The C64 version of
the Adapter plugs into the user expansion
port and uses software to produce a
simulated teletext display.
The Commodore version costs about
£130 and anyone interested should
contact Morley for more details.
There's also a new range of colour
monitors now available from Philips.
There are four models in the range and
prices start at £220.
Philips policy is to improve the clarity,
resolution and performance of monitors
to keep in line with improvements made
to home computers. Philips state that the
monitors are designed to give superior
quality and crispness for every computing
need.
Generally Speaking
FIREBIRD HAS NOW COT A BABY SISTER
- or should that be egg. British Telecom is
forming a new software company, which
will be totally separate from Firebird. The
new outfit is to be called Rainbird and will
be headed by its namesake Tony Rainbird.
First release from Rainbird is Island
Logic's, The Music System. It has been
available for the BBC computer for some
time, but only now has a Commodore 64
version been perfected.
Touch Line
Beyond, 3rd Floor, Lector Court, 151
Farringdon Rd, London EC1R 3AD. 01 837
2899
Macmillan Software. 4 Little Essex St,
London WC2R 3LF, 01 836 6633
Domark. 01 947 5622
Ariolasoft, 8 Westminster Palace Gardens,
Artillery Row, London SW1P 1RL
Quicksilva, Liberty Hse, 222 Regent St,
London W1R 7DB, 01 439 0666
Ultimate, The Green, Ashby de la Zouch,
Leics LE6 5JU, 0530 411485
Hewson Consultants. 56B Milton Trading
Est, Milton, Abingdon, Oxon, 0235 832939
Impex, Metro Hse, Second Way,
Wembley, Middx. HA9 0TY. 01 900 0999
Micronet 800. 8 Herbal Hill, London EC1R
5EJ. 01 278 3143
Morely Electronics. 1 Morley Place,
Earsdon Rd, Shiremoor, Tyne & Wear, 091
2513883
Philips. Burston-Marsieller, 25 North
Row. London W1R 2BY. 01 499 0414
British Telecom. Wellington Hse. Upper
St Martins Lane. London EC1
The Data Protection Registrar, Springfield
Hse, Water Kane, Wilmslow. Cheshire SK9
5AX. 0625 535777
Conblock Electrical Ltd, 1 Merridale Rd.
Chapel Ash, Wolverhampton, W
Midlands WV3 9RT, 0902 773737
Mexican Aid. 20 Holmes Rd, Kentish
Town, London NW5 3AR or Account
03176762, Nat West Bank, Kentish Town
Branch, London NW5 2DG
Programming
In a mathematical
special, Nick
Hampshire shows you
how to use the C64*s
arithmetic routines.
COUNT
ON YOUR
Numeric Variables,
Types and Range
BASIC USES TWO DIFFERENT
types of numbers, integer and
floating point. An integer
number is stored as two bytes
giving a 16 bit signed number
which can store numbers in the
range +32767 to -32768.
Floating point numbers require
five bytes and can store much
larger values in the range ±
1.70141183 E38 to ± 2.93873588 E
-39. In the Basic interpreter all
calculations, whether on
L?l e ?.l r f^-!!^ ' ".f - P « ' TjI^I L^Sf' a foaling point value, - the occupies six bytes and Fac 1 format and location of the two
?Ifh£?,h^?^ sign, the exponent and a four startsat$61 whileFac 2startsat floating accumulators is as
rather than simple integers or b * te mantissa. In packed mode $69. Th ~ - —
binary values. Consequently, '
variablesinmemory.Unpacked 'floating point accumulator V three further areas where
format is used when perform- and 'floating pointaccumulator floating point numbers in
ing calculations upon floating 2'. These names are usually packed format (occupying five
point values. In either format shortened to Fac 1 and Fac 2. bytes) are stored. These areas
there are three components of Each floating accumulator start at $57,$5C and $26. The
the sign is stored as bit seven of
the most significant byte of the
mantissa. In unpacked format
the sign occupies its own byte.
The Floating Point
Accumulator
all integer values are first
converted to floating point
format before any calculations
are performed.
The format for the storage
of an integer value is very
simple, consisting of two bytes
stored as low order/high order
byte. Negative values are
stored in a two's complement In order, to perform arithmetic
form, — the format is shown in operations on any floating
Figure 1. Floating point values point value the interpreter
are stored in either packed needs temporary storage
form, occupying five bytes, or locations for the values being
unpacked form in six bytes, worked upon as well as the
Packed format is the normal result. There are two principle
as
Locations
Function
Fac 1
Fac 2
$61
$69
exponent + $80
$62
$6A
mantissa msb
$63
S6B
mantissa byte 2
$64
$6C
mantissa byte 3
$65
$6D
mantissa Isb
$66
$6E
sign ($FF = - and $00 ■ +)
5 F.EM ** REAL NUMBER FORMAT (PACKED) **
10 A=9
20 C«PEEK<45>+PEEK<46>*256+2
30 INPUT" A REAL NUMBER"; 8
40 E=PEEK<C>
58 N1=PEEK<C+1>
50 M2*PEEK<C+2>
79 N3=PEEK<C+3>
80 M4-=PEEK<C+4>
90 PRINT
iee printe;mi;M2;M3;M4
10o IFE=0THENPRINT0 : END
M0 SG»SGN<64-<M AMD 123))
120 N=(M1 AND127>+123
130 N=N*256+M2
149 N=N*256+M3
150 N=N*256+M4
160 N=N*2T<E-160>*SG
200 PRINTN Program 1
5 REM ** REAL NUMBER FORMAT <PACKED> **
10 A=G
20 C=PEEK<45>+PEEK<46)*256+2
30 IMPUTB
35 I FB=0THENPR I NT0 ; 0 ; 0 ; 0 ; O : PR I NT • GOTO230
40 EX=INT<L0G<A£S(B>VL0G<2>>
59 E=EX+129
60 R=B-21£X
70 SG=SGN<-B>*64+64
80 T0=(R/2-TEX>*128
90 M1=INT<T0)+SG
100 T1=<TO-INT<T0>)*256
110 M2=INT<T1>
120 T2=<Tl-INTai>>*256
130 M3-INKT2)
149 T3=<T2-INT<T2>>*256
150 M4=INT<T3)
160 printe;mi;M2;M3;M4
170 PRINT
180 P0KEC/E
190 P0KEC+1/M1
200 P0KEC+2/M2
210 P0KEC+3,M3
220 P0KEC+4,M4
230 PRINTA
Program 2
other locations used are:
$68 — overflow byte for Fac 1
$6F— sign comparison byte
$70— rounding byte for Fac 1
How a Floating Point
Number is Stored
The storage of a floating poinl
number is fairly complex both
in packed and unpacked
format. The data used to store a
floating point number can be
divided into three components;
the exponent, the sign and the
mantissa. In the unpacked
format, the exponent and sign
both occupy one byte and the
mantissa four bytes. The
following is an explanation of
each component of a floating
point number.
Exponent — The exponent
indicates the position of the
decimal point within the
number. Bit seven of the
exponent byte indicates the
sign of the exponent. Thus, if
the exponent is positive, bit
seven is set to one and,
therefore, the value of the
exponent byte will always be
greater than 128. If the
exponent is negative then bit
seven is set to zero and the
exponent value is less than 128.
The exponent is stored as a
power of two and is multiplied
by the mantissa value to
produce the final value. The
following formulae can be
used to convert a number N
stored in the mantissa bytes
(see paragraph on mantissa for
calculation of N) into the full
floating point number by
multiplying it with a positive
exponent:
Value = N • 2 (E-129)
To determine the exponent
of a number, find the highest
power of two which can be
subtracted from the number.
Thus, if the number is 18.256
then the highest power of two
is 16 or 2 f4. The exponent value
is positive, and therefore
equals 129+4 or 133. The fact
that the exponent is derived in
this way means that the
mantissa for two different
values may be the same, with
the difference being registered
solely by the contents of the
exponent. Thus, the floating
point mantissa contents for the
values 3.14159 (pi) and 6.28318
(pi*2) are identical:
3.14159 stored as — exponent
130 and mantissa 73,15,218,161
6.28318 stored as — exponent
131 and mantissa 73,15,218,161
As you can see, multiplying
and dividing a floating point
number by two is a very simple
operation involving adding or
subtracting one from the
exponent. The range of the
exponent is ± 2tl28. This
equates approximately to ±
10 38.
Sign — The sign of the value is
stored in unpacked — format
as a single byte with a value of
$FF for negative numbers for
$00 for positive numbers. In
packed format the sign is
stored in bit seven of the
highest byte of the mantissa. If
bit seven is zero then the
mantissa is positive, and if it is
one then the mantissa is
negative. Thus the unpacked
floating point values for +2 and
-2 are:
number +2 is — exponent 130
and mantissa 0,0,0,0
number -2 is — exponent 130
and mantissa 128,0,0,0
Mantissa — The mantissa is
stored in four bytes less the
most significant bit of the most
significant byte of the mantissa
which is used to store the sign
bit. To convert a number stored
in the mantissa into its numeric
033C
033C
033C
033C
933C
033C
033C
C000
CO0O
C002
C0O4
CO09
C0OE
C013
C015
C018
C01R
C01C
C01F
C020
C022
C024
C027
C029
C02B
C02D
C02F
C032
C035
C038
C03A
C03D
C03F
C042
C044
C047
C049
C04B
C04E
C04F
C851
I CALCULATE <A+22>AB*5>
i WHERE A AND B PRE INPUT FROM
! THE KEYBOARD. ■»
! ENTRV AT SVS 49171.
i RESULT IS PRINTED
C053
C056
C058
C05A
C05C
COSE
C061
C064
C067
C069
0000
0000
000000
000000
000000
A000
20CFFF
C90D
F0O6
990002
C8
B0F3
A900
990002
R9O0
857ft
0902
857B
2O7900
208AAD
20F7B7
A514
8D0OC0
A515
3DO1C0
AO00
20CFFF
C90D
FG06
990002
C3
D0F3
A900
990002
A90O
857A
A902
857B
207900
203AAD
*»$CO0O
AV
BV
TF1
TF2
TF3
ENTRV
LI
L2
ENTRV 1
L3
L4
20F7B7
A514
8D02C0
WOR 0
W0R 0
BVT 0.0/0*0/0
BVT 0.0*0*0*0
BVT 0,0*0*0*0
LDV #$00
JSR $FFCF
CMP #$0D
BEQ L2
ST A $0200* V
INV
BNE LI
LBA #$00
STA $0200* V
LDA #$00
STA $7A
LDA #$02
STA $7B
JSR $-0079
JSR $AD8A
JSR $B7F7
LDA $14
STA AV
LDA $15
STA AV+1
LDV #$00
JSR $FFCF
CMP #$0D
BEQ L4
STA $0200, V
INV
BNE L3
LDA #$O0
STA $0200* V
LDA #$00
STA $7A
LDA #$02
STA $7B
JSR $0079
JSR $AD8A
JSR $B7F7
LDA $14
STA BV
! INPUT BVTE
'CARRIAGE RETURN?
IVES
! STORE BVTE
!D0 NEXT
I ALWAYS
IZER0 TERMINATOR
'SET CHARGET TO
! BUFFER
! CONVERT TO » 0-65535
! MAKE INTEGER
! STORE VALUE
!IN TEMP
! INPUT BVTE
(CARRIAGE RETURN?
! VES
! STORE BVTE
!D0 NEXT
! ALWAYS
"ZERO TERMINATOR
!SET CHARGET TO
! BUFFER
• CONVERT TO # 0-65535
! MAKE INTEGER
! STORE VALUE
!IN TEMP
Program 3
Programming
equivalent use the following
formulae:
N = 1+(M1 AND 127)+(M2+(M3
+M4/256)/256)/256)/128
where M1.M2.M3 and M4 are
the mantissa bytes, with Ml the
highest and M4 the lowest.
When N has been obtained it
should be multiplied by
2 (exponent — 129) to give the
actual value. The program in
Program 1 allows the input of a
number, then prints the
contents of the exponent and
mantissa bytes for that number
as it is stored in floating point.
These values are then used by
lines 90 to 120 to convert the
floating point byte values back
into the number.
To convert a number into
floating point form is a slightly
harder calculation and involves
the following steps:
First find the highest power of
two which can be subtracted
from the number. E = the value
of two to this highest power.
Secondly let R = the remainder
after subtracting the value of
2 E.
The calculation is then as
follows:
TO = (R/E)*128
M1 = INT(TO)+mantissa sign
(sign =0 if positive 128 if
negative)
T1 = (TO-INT(TO))*256
M2 = INT(Tl)
T2 = (T1-INT(T1))*256
M3 = INT(T2)
T3 = (T2-INT(T2))*256
M4= INT(T3)
Where M1,M2,M3,M4 are the
four mantissa byte values, M1
being the highest. The program
in Program 2 does this
conversion of a number input
at the beginning of the
program into the five bytes of a
floating point format which are
displayed on the screen. The
program then checks by
putting these values into the
first variable in memory
defined as a simple variable A
in line 10.
The following are examples of
the storage of some floating
point numbers;
riJi
1 TIA
f 1 S
♦ i %j
•j i n
BV+1
t* V T k
CP71
AD0 1 C0
LDA
flV+i
•GET FIRST VALUE
C874
f T
AC00C0
LDV
flV
C077
2091 B3
JSR
fB391
! FLOAT IT
CG7A
0204
LDX
#<TF1
.'STORE IN TEMP FfiCl
C97C
A0C0
LDV
*>TF1
CG7E
20D4BB
JSR
JBBD4
C081
A90G
LDA
#tO0
! VALUE 22 <fl6)
C683
AG16
LDV
#*16
C085
209 1B3
JSR
*B391
! FLOAT IT
C088
A904
LDfl
«<TFi
IPO I NT TO TEMP
CG8A
AGCG
LDV
#>TFi
IFAC1
CG8C
2067B8
JSR
fB367
IADD
C08F
A2G4
LDX
KTF1
.'STORE IN TEMP FAC1
C091
AGCG
LDV
#>TF1
2GB4BB
«W \m w AJ T AS Am 9
JSR
*BBD4
w aj Am* mJ
C096
AD03CG
LDfl
* AJ 1 I
BV+i
'get ^FrnNn vai iif
CG Q 9
RC02C0
LDV
BV
CC9C
209 1B3
JSR
f B391
! FLOAT IT
C09F
A2G9
LDX
*KTF2
'STORE IN TEMP FAC2
CPtfW
AGC0
LDV
W>TFP
20D4BB
JSR
*BBD4
n-vu
I DR
1 HFT VAI 1 IP S
: vt 1 V nLl'l- -J
finds
1 T1V
o L' r i r i
T C .P
» CO." X
1 CI ftOT t T
[ DA
pJ<*TFP
CORF
AGCG
LDV
#>TF2
•FAC2
GOBI
WW A
2G28BA
JSR
fBfl28
I MULT I PI V
C0B4
A9G4
LDfl
#<TF1
•POINT TO TEMP
C0E6
A0C0
LDV
B>TF1
IFAC1
C0B8
2G0FBB
JSR
fBBGF
.'DIVIDE
COBB
A20E
LDX
«<TF3
! STORE RESULT IN
C0BD
flGCO
LDV
#>TF3
! TEMP FAC3
C0BF
2GD4BB
JSR
JBBD4
C0C2
2GDDBB
JSR
$BDDD
! CONVERT TO STRING
C0C5
201 Eft B
JSR
fflBlE
•PRINT STRING
C0C8
4C74A4
JMP
ffl474
» 'READV. '
Table 1
Using the Arithmetic
Routines in a Machine
Code Program
Using the arithmetic routines
within the Basic interpreter can
save the programmer a lot of
time in program development.
It can also considerably reduce
the size of a machine code
program. The only penalty is
that in the program using eight
or 16 bit values the interpreter
routines will have a consider-
ably slower run time than
specially written routines.
When faced with the necessity
of having to use arithmetic
Number
Exponent
M1
M2
M3
M4
Sign
1
$81
$80
$00
$00
$00
$00
-7
$81
$80
$00
$00
$00
$FF
.5
$80
$80
$00
$00
$00
$00
.25
$7F
$80
$00
$00
$00
$00
1E38
$Fr
$96
$76
$99
$52
$00
1E-39
$00
$A0
$00
$00
$00
$00
routines the best procedure is
to always use the interpreter
routines and only replace these
if the program is running too
slow. A list of the main
arithmetic routines within the
C64 is shown in Table 1.
It is quite simple to utilise
the interpreter arithmetic
routines within a machine code
program. The essential thing to
remember is that the
interpreter does all its
calculations on floating point
numbers, therefore all integer
values must first be converted
to floating point. The following
is an example of a routine using
the interpreter arithmetic
routines:
calculation C = (A+22) / (B*5)
Where values A and B are both
positive unsigned 16 bit integer
values these are both input
from the keyboard at the start
of the beginning of the routine
and the result C is a five byte
floating point value which is
both stored in memory and
displayed on the screen.
Variable storage locations in
memory used by this routine
are:
$C000 — Isb of value A
$C001 — msb of value A
$C002 — Isb of value B .
$C003 — msb of value B
$C004 to $C008 — temporary
floating point value storage 1
$C009 to $C00D — temporary
floating point value storage 2
$C00E to $C012 — floating
point result C storage
This article is extracted from
the following books and
readers are recommended to
consult them for further
information — Advanced
Commodore 64 Basic Revealed
and Commodore 64 ROMs
Revealed both by Nick
Hampshire and published by
Collins.
[PROGRAM : COLOUR / K . FROST
This month K Frost
provides a couple of
very handy routines
for use on all
machines.
HOW OFTEN HAVE YOU
wanted lo pul a scrolling
message acctoss your screen?
You know the type, they are
used in most games programs
to give instructions or a witty
message. The first routine does
just this. It is written in Basic but
nevertheless is quite fast and
would be very easy to include
in your own programs as a sub-
routine.
All the routine requires is
that the message to be scrolled
is held in the string A$ and the
positioning of the string is held
in D$, i.e. D$ should hold a
home and a number of cursor
movements.
The 18 in the MIDS state-
ment is the width of the
message window. This can be
any size but don't forget if you
go over 40 the message will
scroll over more than one line
on the screen.
All Things Bright
The second routine is one that
will display a message and flash
the letters of that message in
different colours. This is very
good for messages such as
PRESS ANY KEY TO CON-
TINUE' or 'SPACE TO PLAY'.
Again the program is in
Basic and you can easily add it
as a subroutine to your own
programs. The message that
you wish to colour should be
held in the string AS. $ holds all
the colours through which you
wish the letters to cycle. Do
experiment with this as some
very interesting effects can be
achieved.
100 PRINV'CCLEAR:":REn COLOURS
LAY
130 : BS- - cSh I TE , RED , CYAN . HAGENT* ,
GREEN . BLUE , YELLOW , CB , C3 . C4 , C5 ,
i40 C rcnV™iN f 5 UT p ^ T *, CH0rlE .
"ajStSo";""" POSITION
THE STRING
,c n p-QR B-l TO LENCAS)
. C -INTCLENCM3*RNDC1)3*1
ipRINT tllDSCBS.C.nniDSCAS.B.
inlbR X-0 TO 15: NEXT X.B.A
R°LUNG%;™i*AnPLE o F
130 R£n C nT^ UR COh "°°°*z
16 0 f?Fh * 0n£: .DOU/rVq prr.
•b-b-s-boUmd Tq be h tin
"10 levels of fun make this torture excellent value
for money. Nova rating. Definitely one of those
Just another go' games. Game of the month
February" - Computer Gamer
"The most compulsive game I've ever
played. If you don't buy it you'll never
know what you've missed." says Gary
Penn, Zzap! 64. Gold Medal Award.
97% overall.
£9.95
cassette disc
Free with Bounder Metabolis.
Is it a man, is it a bird?
(Commodore 64/128 version only)
January
Eric Doyle shows you
how to foil the
program pinchers.
AFTER SPENDING MANY A
sleepless night and cloistered
day creating and debugging
your latest computer master-
piece, it's disconcerting to
know that any Tom, Dick or
Harriette can rip it off in
seconds flat. In the past many
methods have been suggested
to prevent LISTing but few are
satisfactorily secure.
The four most common
methods prevent the list func-
tion from operating properly
but only one of these works
after the program has been
RUN.
Firstly, thec^ is the simple
expedient of using a shifted 'L'
in a REM statement on the first
line of your program:
10 REM [S L]
Trying to list to a printer
causes it to hang up after the
REM and the normal command
LIST merely produces the
following:
10 REM
SYNTAX ERROR?
READY
To undo this protection it Is
merely a case of deleting line 10
and then the program can be
freely listed by anyone. Not
very secure.
The second method only
protects one line of a listing
and also uses the protection of
the REM statement. The easiest
way to see this in operation is to
enter a line such as
10 PRINT'HELLO" :REM"
Press the return key to enter
the line and then move the
cursor to the space after the
quotes. Press the shifted delete
key (INST) four times and then
press it again four times
unshifted (DEL). This should
give four reversed letter T
symbols. Next type GOTO 30
and press return.
If you now LIST the one line
program you should see
10 PRINT"HaLO":GOTO 30
As there is no line 30 an
error message would be
expected but when this
program is RUN it executes
normally with no error. All that
has happened is that the REM
part of the line has been
masked by the delete symbols
and the GOTO is still seen by
the operating system as being
within a REM statement. When
the system tries to LIST to the
screen the deletes are
executed and this effectively
pulls back the GOTO over the
REM. On a printer the trick is
revealed because each delete is
shown in its original form as a
reversed T.
Instead of the intricate
INST/DEL routine, just pressing
RVS ON and the letter T gives
the same effect but with less
fiddling about.
Adding more deletes pulls
the GOTO further back along
the line and experimentation
will show that the command
can be polled back over the
line number and even on tothe
previous line.
This is useful because it can
be used in conjunction with
the first list protection method
to disguise its presence.
17 PRINT"HELLO"
23 REM"|47 deletes]100
PRINT""[S L]
This apparently only lists a line
100 on the screen and gives a
SYNTAX ERROR? message. The
false line 100 would succeed in
putting most people off the
scent and using line numbers
which are not divisible by 10
would make deletion of the
coded lines difficult. On a
printer the trick is revealed as
the deletes are shown in their
original form as reversed Ts.
Instead of the PRINT
statement in line 17 you could
use a PEEK statement which
looks for the shifted L in line 23.
To find the location of this
character insert the following
line:
171FPEEK(XXXX) O204
THEN SYS 64738
Now enter the following in
direct mode (no program line
number)
FOR A=2049 to 5000:IF
PEEK(A)<>204 THEN
NEXT
When the cursor reappears
type PRINT A and re-enter line
17 with the number obtained
(2140) in place of (XXXX).
Repeat this line somewhere
deep in the rest of your listing
and hide it using the next
method of protection.
Remember that whatever line
number is used for the two
lines at the beginning of the
program, the position of the
shifted L will not move.
The third method takes
advantage of the way a line of
Basic is seen by the operating
system. A line consists of two
bytes which give the memory
address of the start of the next
line, two bytes giving the
current line number and then
the tokenised code for the
Basic instructions followed by a
null (zero) byte denoting the
end of the line. When a line is
listed the null byte is used to
tell the system to start a new
line, not the two byte pointer
to the beginning of the next
line. We can fool the system
into jumping to the next line
during a list by inserting a null
byte where it least expects it
causing the list to prematurely
jump to the next line without
listing the Basic code in the
current line.
After writing your program,
decide which line you want to
hide and place any five letters
at the beginning of the line.
lOSSSSSPRINT'HELLO"
Next insert a STOP at the end of
the previous line or insert a
new line which consists solely
of a STOP command:
5 STOP
10SSSSSPRINT"HELLO"
RUN the program until theslop
is reached and the familiar
break message is displayed. At
this point the system has stored
the memory location of the
next line just in case CONT is
used, locations 61 ($3D) and 62
($3E) contain these pointers so
the start of the line is given by
the formula PRINT PEEK
(63)*256+PEEK(64). In the
example the value would be
2055.
To avoid upsetting the line
link and the line number add
five to this value and poke the
location given with zero
(POKE2060.0). The dummy
STOP command can then be
deleted and a LIST will show
only the line number of the
hidden line whether listed to
the screen or a printer.
For the final method of list
protection we need to know a
little about the way in which
the 64's memory is organised.
Locations 768 ($300) to l 819
($333) mainly consist of jump
vectors for some of the main
ROM routines like LOAD,
SAVE, BREAK and, more im-
portantly, LIST, A vector is a
two byte number which gives
the location of the start of the
in-built machine code routine
which performs the relevant
task. For example, a memory
map gives the LIST vectors as
being in location 774 and 775
(S306-S307). Change either of
the values found in these
locations and the LIST function
will be disabled causing all
c
5 PRINHCLEAR,DONN]LOADING PLEASE KAIT'jiFOR A=0 TO 86
:D=0
10 FOR B=0 TO 7: READ C:D=D+C:PQKE 49152+AIB+B, C: PRINT" ;
;NEIT
15 READ C:IF COD THEN PRINT: PRINT'CDOMN]
ERROR IN LINE"AI10+100:END
20 NEXT: PRINT: PRINT" [DQNN1ALL OK':FOR A=0 TO 1000:NEH
25 INPUT" [CLEAR, DQKN6JARE YOU SAVING TO TAPE OR DISK (T/D
)»jSM
30 IF SMO'T 1 AND SMO'D" THEN 25
35 IF SD$="T" THEN GOSUB 60:PQKE 186,1
40 IF SD«="D" THEN GOSUB 70:P0KE 1B6,B
45 PRINT a [D0WN2 t SPC7 v RVS0N,SPC3PRESS <SPACE> WHEN READY
CSPC, D0HN2] PRINT " ISPC61 " ;
50 GET A$:IF A*OCHR$(32) THEN 50
55 SYS 49802: END
60 PRINT'CDOHNIENSURE TAPE IS CUED TO THE END OF THECSPC3]
'STOP THIEF! ' BASIC PROGRAM. "
65 RETURN
70 PRINT" CDOMNJPLfiCE YOUR 'STOP THIEF!' DISK IN THECSPC4]
DISK DRIVE."
75 RETURN
100 DATA 160,0,162,45,169.241,32,5,814
110 DATA 193,192,40,208,247,185,0,194,1259
120 DATA 170,185.216.193,32,5,193,192,1186
130 DATA 80,20B,242,162,9B,169,242,32,1233
140 DATA 5,193,192,120,208,247,32,14,1011
150 DATA 193,169,1,166,251,160,255,32,1227
160 DATA 186,255,169,16,162,138,160,194,1280
170 DATA 32,189,255,169,0,32,213,255,1145
180 DATA 32,14,193,169,193,133,254,160,1148
190 DATA 48,166,252,224,8,208,6,169,1081
200 DATA 0,133,253,240,4,169,80,133,1012
210 DATA 253, 162,0,177,253, 41, 63,157,J106
220 DATA 160,4,232,200,192,128,208,243,1367
230 DATA 162,0,160,0,185,208,193,157,1065
240 DATA 24,5,232,200,192,25,208,244,1130
25) DATA 32,159,255,32,228,255,201,13,1175
260 DATA 208,246,166,252,224,8,240,5,1349
27) DATA 160,46,32,30,248,32,14,193,755
280 DATA 169,3,141,39,3,169,81,141,746
290 DATA 38,3,160, 0,185,96,194, 153,829
300 DATA 81,3,200,192,42,208,245,234,1205
310 DATA 234,234,234,169,100,160,0,153,1284
320 DATA l50,5,200,192,2B,208,24a,160,1191
330 DATA 0,185,239,193,153,190,5,200,1165
340 DATA 192,11, 20B,245, 160,0, 185,80,1081
350 DATA 194,41,63,73,128,153,201,5,858
360 DATA 200,192,16,208,241,169,160,153,1339
370 DATA 201,5,169,0,32,144,255,169,975
380 DATA 1,166,252,160,1,32,186,255,1053
390 DATA 169,58,162,80,160,194,32,189,1044
400 DATA 255,169,22,133,43,169,3,133,927
410 DATA 44,169,43,166,174,164,175,32,967
420 DATA 216,255,76,226,252,153,0,4,1182
430 DATA 138,153,112,7,200,96,169,0,875 ^
440 DATA 133,254,169,4,133,255,162,3,1113 *
manner of things to occur if the
command LIST is used. Insert-
ing a line at the beginning of
your program such as:
10 POKE766,226:POKE769,252
would resull in a system reset if
LIST was attempted. Changing
these values to 131 and 164
respectively would apparently
cause nothing to happen.
One word of caution, I'm all
in favour of experimentation
but be warned: never play
around with vectors if you have
something valuable in the
memory, you'll lose it!
All these systems have a
common fault: they are all
easily circumvented once
located. What is needed is a
program which will run auto-
matically and again we need to
look at the vectors in the light
of how the operating system
leaves the LOAD command.
A call is made to the vector
jump at location 770 ($302)
which causes a warm reset of
the system. If this vector is
changed to cause the newly
loaded program to run we will
have achieved our aim. But
how can this be done?
First we must check that the
memory locations which
define the start and end of the
program are correctly primed
and (hat the text pointer is set
to the beginning of the
program. Fortunately, this can
be done by calling up a routine
in the Basic ROM located at
42585 ($A659) and then a call to
42946 (SA7AE) will cause the
execution of the program. This
means that we have to place a
short routine into the memory
and point the warm start
vectors to the start of the
routine.
Finding a place to store the
autorun routine can be fraught
with problems because it must
stay in memory to keep (he
program re-running.
The cassette buffer must be
avoided in case the program
needs to access the recorder
for any reason. Just below (his
buffer are eight consecutive
bytes of free memory which
will house our six byte routine
comfortably:
0334 JSR $A659
0337 IMP $A7AE
Two bytes of the warm start
vector can now point to this
routine and because the warm
start is called up by the
RUN/STOP-RESTORE routines
the use of the RUN/STOP key
will result in the program re-
starting from the beginning.
To ensure that the autorun
will work, a wedge, called from
the CHROUT vectors at
806($326), must be placed into
the cassette buffer to alter the
vector at 770($302) at the end of
loading. When the system tries
to print READY, it jumps into
the wedge which changes the
warm start vectors. All of the
memory from 316 (o the end of
your Basic program is saved
after the CHROUT vectors
have been changed.
Obviously, you cannot
change the vector without
using a machine code SAVE
routine. The one included here
starts off with a Basic program
which stores the details of the
load and save devices and
filenames. This jumps in(o a
machine code routine which
loads the program which you
want to protect, devises a
suitable loading screen and
places the autorun details in
memory. A save is then
performed and a cold reset is
performed allowing you to try
your new autoloading program
out.
The Basic loader program
includes a save routine. To set
up your Stop Thief! master
enter and save the loader
program on a spare tape or
disk. Type in and save the Stop
Thief! Master program and
then load and run the Basic
loader (so that it stores the
program immediately after (he
Master program if you are
using tape).
When using Slop Thief!,
toad the Master program and
run it. This automatically loads
the machine code program.
Although you will receive a
prompt, make sure that the
tape/disk containing the
program ready for conversion
is in the recorder/drive.
After loading, suitable
prompts will appear to enable
you to successfully save your
autorun program and disk
users should not be too
concerned about (he fac( tha(
(he saving screen proclaims
that it is loading the program.
Remember that this screen will
be saved along with your
program and therefore will
become your loading screen.
The results of your labours
will be unbreakable Basic
programs. . .well almost!
580
* Of;
600
610
450 DATA 160,120,169,32,145,254,200,208,1288
460 DATA 249,230,255,202,208,246,145,254,1789
470 DATA 200,192,112,208,249,96,0,0,1057
480 DATA 69,78,83, B5, 82.69,32, B4.5B:
490 DATA 72,65.84,32,84,72,69.32,510
500 DATA 68,73,83,75,32.73,78.32,514
510 DATA 89,79,85.82.32,68,73,83,591
520 DATA 75,32,68.82,73.86,69,32.517
530 DATA 73,83,32,82,69,65,68,89,561
540 DATA 32. 84,79,32. 84,65.75. 6?, 520
550 DATA 32, 84, 72, 69, 32, B0.82, 79,530
560 DATA 84.69.67,94,69,68,32.80,553
570 DATA 82,79.71.82,65,77,32.32.520
DATA 69.78.33. 85. 82,69, 32, 84. 582
DATA 72,65,84,32,84.72.69.32,510
DATA 84.65,80,69,32.73.78,32,5!!
DATA 89.79,85, 82. 32, 82.69.S7. 585
620 DATA 79, 82. 68, 69, B2. 32.73.83, 568
630 DATA 82,69.65,68,89.32,84,79,568
640 DATA 32.84.65,75,69,32,84.72,513
650 DATA 69,32,80.82,79,84.69,67.562
660 DATA 84,69,68,32.80,82,79,71,565
670 DATA 82,65.77,32,32.32,32,32,384
680 DATA 16.18,5.19.19,32,60.18.187
690 DATA 5, 20, 21, IB, 14, 62.32. 23,195
700 DATA 3,5.14,32.18,5.1,4.87
710 DATA 25,32.89,166,76,174.167,160.889
720 DATA 140.143, 129,132,137.142.135,160,1118
730 DATA 160.160.160.0,0.0,0,0,480
740 DATA 160, 170, 160, 170, 160. 170, 160, 170, 1320
750 DATA 160.160,147,160,148,160,143,160.1238
760 DATA 14*. 160, 160, 148, 160, 136, 160, 137, 1205
770 DATA 160.133,160,134.160.161,160,160,1228
780 DATA 170,160.170.160.170.160,170.160,1320
790 DATA 0,32,32,1,19,16,32.12,144
800 DATA 20.4,32,47,32,25,15,21.196
810 DA T A IB. 32.3, 15,13, 13, 15,4, 113
820 DATA 15.18,5,32,47,32,5,18,172
830 DATA 9,3.32,4,15,25,12,5,105
840 DATA 0.0,0,0,0,0,0,0,0
a50 DATA 0,0,0,0,0,0,0,0,0
860 DATA 169,202,141,38,3,169.241,141,1104
870 DATA 39.3.160,6,185,116,3,153,665
8B0 DATA 51.3,136,208,247,169,0,133,947
890 DATA 198,169,52,141,2,3,169,3,737
900 DATA 141.3.3,96.32,89,166.76,606
910 DATA 174,167,169.1,166,186,160,1,1024
920 DATA 32,1B6,255.169,10,162,174,160,1148
930 DATA 194,32,189,255,169,0,133,253,1225
940 DATA 169.192,133,254,169,253,162,138,1470
950 DATA 160,194.32,216,255,96,84,72,1109
960 DATA 73,69,70,32,67,79,68,69,527
io rem tttttsisutttmitmsutt
20 REH USPC23S T 0 PCSPC23T H I E F !tSPC23t
30 REM USPC24JI
40 REM MSPClUBYtSPClllt
50 REH ICSPC71ERIC D0YLECSPC71I
60 REH USPC243I
70 REH t YOUR CQMHODORE C SPC23 FEB 85 I
bo reh imtmmumttmtmi
90 GOTO 180
100 PRINT'[CLEAR,RVS0N,6REEN,CE,C7,CE2,C3,CE2,CB,CE2,C6,
CE2 ) YELL0«,CE22,C6,CE2,C8 ( CE2,C3,CE2,C7,CE2,6REEN ) CE]-:
110 PR I NT" CC7 , SPCH CC3 , SPC ] I CC8 , 5PC 3 1 C C6 f SPC1 • C YELLOW ,
SPC23S T 0 PESPC23T H I E F !CSPC2,C6]l[SPC,C8]t[SPC,
C33tlSPC,C73t B i
120 PRINT" [6REEN,CR,C7,CR2,C3,CR2,C8,CR2,C6,CR2, YELLOW,
CR22,C6,CR2,C8,CR2,C3,CR2,C7,CR2, GREEN, CR3'
130 PRINT" CDDMN1B3 " ;
140 PRINT-E6REEN3-CC73— CC33—CCB3— CC63— CYELLQM3
[C63--tC83"[C3!--tC7]~C6REEN]
150 PRINT'[C7]e[SPC,C3,SPC]A[C83SPCC6,SPC]LCYELL0H]TD /
YOUR COHHQDORE / EREC63 ICCC8 P SPC3DCC33QYEC73LE* ;
160 PRINT' [GREEN, CI. C7,CI2,C3,CI2,CS,CI2,C6,CI2, YELLOW,
C 122, C6,CI2,C8,CI2,C3,CI2,C7,CI2, YELLOW]';
170 POKE 2023,98:PQKE 56295, 5: RETURN
180 A=A+1:P0KE 532B0,9:POKE 53281,9
190 PN$=":PPI=":PADI='tSPC163":SOSUB 100:0=PEEK(186)
200 IF A<2 THEN PRINT' [HOME, DQWN73LQADIN6 CODE. [DOWN, SPC3
PLEASE WAIT...':LCAD'THIEF C0DE',D,1
210 INPUT'tHOHE,DONN53LQAD ORIGINAL FROM TAPE OR DISK
[SPC10,LEFT103';TD$
220 TD$=LEFT$(TD*,1):IF TDIO'T" AND TDIO'D" THEN 210
230 POKE 25l,l:LDI='TAPE':IF TD$="D" THEN f>OKE 251,8
:LD*="DISK"
240 INPUT'[HOHE.DOWN73SAVE COPY TO TAPE OR DISK[SPC10,
LEFT 103" ; TD*
250 TD$=LEFT$tTD$.l>:IF TDIO'T" AND TDIO'D' THEN 240
260 POKE 252,1:SD$='TAPE":IF TD$="D' THEN POKE 252,8
:SD$="DISK"
270 INPUT'EH0HE,D0WN930RIGINAL NAHE";PN$: IF PN*=" "THEN 270
280 IF LEN(PN$)<17 THEN POKE 49203,LEN(PN$1
290 PN$=PN«+PAD$:PN*=LEFT$(PN$,16)
300 INPUT'[H0HE,DDWN113C0PY NAHE';PP*
:IF PP$='t" THEN PP$=PN$
310 IF PP$=" THEN 300
320 IF LENIPPIX17 AND SD$<>"TAPE' THEN POKE 49385,
LEN(PPI)
330 PP$=PP*+PADi:PPS=L£FT$(PP*,i6)
340 SOSUB 100
350 PRINT"CHOHE,DOWN5,YELLOH3'PN*'[GREEN,SPC:
WILL BE LOADED FROM"
360 PRINT" [DOWN, YELL0W3" ;LD$" [GREEN, SPC3 AND SAVED IN ITS
PROTECTED FORH ON'
370 PRINT'[DOWN,YELLOWJ"SD$'[6REEN,SPC3UNDER THE NAHECSPC,
YELLOW] "PP$
380 PRINT"CD0WN3IS THIS CORRECT?"
390 GET A$: IF AIO'Y" AND AIO'N' THEN 390
400 IF A$='N" THEN 180
410 FOR A=l TO 16:P0KE 49B01*A.ASC(HIDKPN$,A,!>>
:POKE 49743+A,ASC(MlD$(PPI,A,i))
420 NEXT
430 GOSUB 100:PRINT'CHOHE.DOWN83INSERT "LD»" CONTAINING
"PN*
440 PRINT'PRESS -RETURN) WHEN READY"
450 SET A*: IF A$OCHR$tl3) THEN 450 _
460 SYS 49152 "
14
i
A Flash Of
Genius!
0
946240 CWEASY G 19002985 PRESTEL MAILBOX 919992265
Make magic with this month's)
from Global Software.
THERE'S MAGIC IN THE AIR AND
mischief too in Magician's Ball from
Global Software. If you want to improve
your spelling then study the illustration
on this page and see if you can be one
of the lucky readers to enter an enchanted
adventuring world. If you want to find
out more about the game then turn to
Sense of Adventure for details. There are
20 copies of the game to be won and the
top five entrants will also receive a copy
of Global'* Caretaker program.
Mow to tnter
STUDY THE ILLUSTRATION
page. Look very carefully as
ON THIS
there are
several enchanted balls hidden in the
picture. When you think you have found
all the hidden ball*, circle them clearly.
Fill in the entry coupon carefully and
seal it in an envelope, writing the num
of balls you found on the back.
Send your entry to: Global Software
Competition, Your Commodore, No 1
Golden Sq, London W1R 3AB. The closing
date is Eriday 28 February 1986.
You may enter as many times as you
wish but each entry must be on an official
coupon and sealed in a separate
envelope.
Important: Please follow closely the
guidelines on entering - incomplete
coupons and entries with no numbers on
the back cannot be considered.
The Rules
ENTRIES WILL NOT BE ACCEPTED
from employees of Argus Specialist
Publications, Alabaster Passmore and
Sons and Global Software. The restriction
also applies to employees' families and
agents of the company.
The How to Enter section forms part of
the rules. The editor's decision is final and
no correspondence will be entered into.
Global Software Competition Entry
Coupon
Name . .
Address
J post code
I Number of Magician's ball* found: • ■ • ■ ; • v " ' V.* " "
Send to* Global Software Competition, Your Commodore, No 1 Golden
| Sq, London W1R 3AB. Write clearly and don't forget to write your answer on
I the back of your envelope.
THE COUNTDOWN HAS BEGUN
n.R.P.£&9S
DURELL sales dept.,
I Castle Lodge, Castle Green/Taunton TA1 4AB
Steve Carrie adds a
machine disassembler
to the Mach 1
monitor.
IN THIS ARTICLE, I WILL GIVE
listings of the MACH 1 monitor
extension and also some infor-
mation on the whole MACH
series of programs.
The extension adds a dis-
assembler to the normal
monitor commands. When the
Basic program is RUN for the
first lime, it will patch the dis-
assembler into the normal
monitor code. Note that it
replaces the 1 command (warm
restart), so you will not be able
to use the warm start facility (a
similar effect can be created by
issuing a G 8200 command).
When you have typed in
and saved the extension listing,
place a disk containing the
original monitor program in
the drive then RUN the
program.
First, the extension code is
placed in memory at address
7D00 hex. Each line has a
checksum. If a data error
occurs, the program will print
the number of the line where it
was detected. This checksum
isn't 100% effective since one
error may cancel out another
so be careful!
Next, the original monitor
code is loaded in at its usual
address of 8200 hex. A series of
POKEs patch the extension into
the main code. These changes
are as follows:
1 Change the I command to D
and reset execution vector.
2 A section of code in the
original monitor which sets the
top of memory is altered to set
at address 7D00 hex
3 Alter start-upmessage vector.
Finally, the whole program
is saved to disk under the name
of NEWMON. When you are
sure that everything works OK.
you can replace the original
MONITOR file with this new
version.
When the SAVE is com-
plete, type SYS 64738 to reset
the machine (don't switch ihe
machine off!) then enter the
monitor " with SYS 33280
(unchanged). In addition to the
usual start-up message, you
should see another one similar
to:
MACH1 EXTENSION
VERSION 3.5
(C) OCTOBER 1985 5.D.C)Y.C.
Now, if you type D A560
< return>the disassembler
should p'rint out the contents
of one of the ROM routines.
Note that this command auto-
matically sets hex I/O mode.
You should note that there
is now about IK less source
code space for the editor which
still leaves about 30K.
given below.
Name
Address
START
8200
SAVE
8203
LOAD
8206
FNAME
8209
OUTADD
820C
OUT BYT
820F
RET
8212
EVAL
8215
CHKHEX
8218
CHKNUM
821B
CHKANU
821E
NSFT
8221
COPEN
8224
Function
WARM START
SAVE TO DISK
LOAD FROM DISK
PARSE FILENAME
OUTPUT A 2-BYTE NUMBER
OUTPUT A 1-BYTf NUMBER
1 OUTPUT A CR
IF
EVALUATE EXPRESSION
CHICK ACC FOR HEX CHAR
CHACK ACC FOR NUMBER
CHECK ACC FOR AlPHA-N
SETS FILENAME PARAMETERS
OPEN DISK ERROR CHANNEL
The Monitor Jump
Table
When I wrote the MACH
series, I decided lo put some of
the more commonly used
routines into the monitor. A
jump table was provided at
address 8200 hex to access
these roulines. Since the
monitor is always present, a
program only had to know
where to call the required
jump. A fair chunk of memory
was saved using this method. In
fact, looking back on it now, a
lot more could have been
saved.
The names of the routines
and their call addresses are
SAVE — Save memory to disk.
At entry. TXTPTR must point to
an ASCII string in TIB which has
the format:
filename addressl > ad-
dress2 >
This is the same format as the
monitor S command. Any
errors cause a jump to the
error handler. On exit.
1 XTPTR points to the end of the
string+1. This routine uses a
logical file number of 1. Note
that the Basic ROM is switched
out to allow thearea A000-BFFF
hex to be saved too.
LOAD — Load from disk. On
entry, TXTPTR points to an
ASCII string in TIB with format:
filename>
address should be used since
each routine ends with RTS
(except START).
Some are more useful than
others. A more detailed
description follows. Note that
TXTPTR is the CHRGET text
pointer at address 7A hex and
TIB is the terminal input buffer
at address 0200 hex.
START — This simply vectors lo
the code for restarting ihe
monitor. It is a non-returning
routine which destroys the
6502 system stack. This is
normally used by an external
command to return control to
the monitor (see EXTERNAL
COMMANDS). This is also the
address 33280 used by the Basic
start-up call.
This is the same as the monitor
L command. Any error causes a
jump lo the error handler
routine. On exit. TXTPTR ■ end
of string+1. Uses logical file 1.
FNAME — Parse filename. On
entry, TXTPTR points to an
ASCII string in TIB which re-
present the filename. At exit,
registers are as follows:
X - length of filename string
Y - start offset of siring in TIB
TXTPTR - end of string +f
This routine uses spaces as
delimiters. An error is given if
string exceeds 50 characters.
OUTADD — Oulput a 2-byte
ASCII hex or decimal string. On
entry, Y,X contain the 16-bit
value to be printed. Theoutpu!
mode (hex or decimal)
depends on the flag OUTMOD
(address 02AE hex). If
OUTMOD is zero, output
mode is decimal otherwise it is
hex.
OUTBYT — Similar lo
OUTADD except an 8-bit value
in the accumulator is used.
RET — Simply outputs a cr/lf
combination to the current
output device.
EVAL — Evaluation expression.
On entry TXTPTR points to the
start of the string. The flag
OUTMOD operates in the
usual way. Errors will be
incurred if either the number is
out of range (0<n>65535) or
illegal characters are found.
Note that this routine also
checks for the apostrophe (')
which puts EVAL into ASCII
mode regardless of OUTMOD.
On exit. TXTPTR points to the
end of the string +1.
CHKHEX, CHKNUM, CHKANU
— These three routines check
the accumulator for an ASCII
hex, numeric oralpha-numeric
character respectively. At exit,
a carry-flag set indicates a valid
character.
NSET — Set filename
parameters. On entry TXTPTR
points to the start of a filename
in TIB. On exit, KERNAL
routine SETNAM {FFBD h«
called and TXTPTR ■ end of
filename +1.
COPE — Opens disk device 8
error channel 15. No input
parameters. There is no
CCLOSE call. A file close may
be accomplished using the
following routine.
LDA#15 ; COPEN USES LFN 15
JSR $FFC3 ; KERNAL CLOSE
ROUTINE
Put simply, an external
command is one whose code is
not resident in the MACH1
area. Externals normally
occupy the area from 9000 to
9FFF hex but may extend up to
CFFF hex if the Basic ROM is
switched out (if you use this
method, remember to switch
the ROM back in before calling
START to return to the
monitor).
When the external has
finished executing, a JMP
START allows the monitor to
regain control. The actual call
address of an external is 9000
hex.
10 A*A*l:IF A=2 THEN 110
20 S*32000:PRINT-INSTALLIN6 EXTENSION'
30 FOR L*200 TO 980 STEP 10
40 T=0
50 FOR B=0 TO 15
55 READ Z:P0KE S.Z:S=S+1:T=T+Z
60 NEXT
70 READ TT: IF TTOT THEN PRINT-DATA ERROR IN LINE';L:END
90 NEIT
90 PRINT-LOADING MONITOR. ■
100 LOAD-flONITOR-,8,1
110 POKE 33340,68
120 POKE 33450,0:P0KE 33451,125
130 POKE 35269,125
140 POKE 35284,76:P0KE 35285, 144: POKE 35286,129
145 PRINT-SAVING NEWH0N"
150 POKE 43,0:P0KE 44,125:P0KE 45,128:P0KE 46,142
160 SAVE -NEHHON-,8,1
170 POKE 43,1: POKE 44,8:CLR
160 PRINT-FINISHED. ':END
200 DATA 76,225,126,255,105,101,117,255,109,125,121,97,113,
255,255,41, 2376
210 DATA 37,53,255,45,61,57,33,49,255,10,255,6,22,255,14,30,
1437
220 DATA 255,255,255,255,255,255,36,255,255,44,255,255,255,
255,255,255, 3650
230 DATA 201,197,213,255,205,221,217,193,209,255,255,224,
22B,255,255,236, 3619
240 DATA 255,255,255,255,255,255,192,196,255,255,204,255,
255,255,255,255, 3907
250 DATA 255,255,198,214,255,206,222,255,255,255,255,255,73,
69,85,255, 3362
260 DATA 77,93,89,65,81,255,255,255,230,246,255,238,254,255,
ASSEMBLER are externals.
Often, if the external you want
to use has already been called
(i! must have been the last
external called), a G 9000
command will provide a
quicker method of execution.
This is because an external
remains resident after
execution i.e. it is not deleted
from memory. This is true until
another external is called or the
F command is used to clear out
this section of memory.
The Macro Processor
Bug
And now. . . the bug! I
discovered this while using the
MACH system. It will only
affect you if you use the micro
processor on large source files
containing macro calls.
Basically, when the macro
processor is constructing the
output file, it uses the available
memory from 0601 to 7CFF hex.
Due to a programming
oversight {a nice
way of:
to see if this file is overflowing
into the area above 7DO0 hex.
The processor will quite
happily destroy itself!
If the application you are
working on needs no macros
then you can leave out the
macro processing altogether
and submit the raw code to the
assembler.
Unfortunately, there is no
easy way to tell when an
overflow will occur. As a
guideline, if your source code
occupies more than about 25K
and contains calls to some
really big macros then you may
run into trouble but I think
about 90% of the time you will
be OK. Sorry about that!
I have tried to make the
MACH system reasonably
versatile by including the
external command facility. If
anyone has any comments,
questions or ideas on the
system, I would be glad to hear
them. Write to Steve
re.
255,255, 3158
270 DATA 255,255,255,255,255,255,76,255,255,255,255,108,255,
255,255,255, 3754
280 OATA 255,32,255,255,255,255,255,255,169,165,181,255,173,
189,185,161, 3295
290 DATA 177,255,255,162,166,255,182,174,255.190,255,255,
255,255,160,164, 3415
300 DATA 180,255,172,188,255,255,255,255,74,255,70,86,255,
78,94,255, 2982
310 DATA 255,255,255,255,9,5,21,255,13,29,25,1,17,255,42,
255, 1947
320 DATA 38,54,255,46,62,255,255,255,255,106,255,102,118,
255,110,126, 2547
330 DATA 255,255,255,255,255,233,229,245,255,237,253,249,
225,241,255,255, 3952
340 DATA 255,133,149,255,141,157,153,129,145,255,255,255,
134,255,150,142, 2963
350 DATA 255,255,255,255,255,255,255,132,148,255,140,255,
255,255,255,255, 3735
360 DATA 66,67,67,66, 67, 83,66, 69,B1, 66, 77,73,66, 78,69,66,
1127
370 DATA 80,76,66,86,67,66,86,83,67,76,67,67,76,68,67,76,
1174
380 DATA 73,67,76, 86,68, 69,88,68,69, 89, 73,78,BB,73, 78, 89,
1232
390 DATA 80, 72, 65, 80, 72, 80, 80, 76, 65, 80, 76, BO, 82, 84, 73, 82,
1227
400 DATA 84,83,83, 69,67, 83,69,68,B3,69,73,84,65,8B,B4,65,
1217
410 DATA 89,84,83, 88,84. 8B,65,84, 88,83,84, 89,65, 78, 79,80,
1311
420 DATA 66,82,75,65,68,67,65,78,68,65,83,76,66,73,84,67, ►
430 DATA 77,80.67,90,88,67,80,89,68,69,67,69,79,82,73,78,
1213
440 DATA 67,74,77,80,74,83,82,76,68,65,76,68,88,76,68,89,
1211
450 DATA 76, B3,82 ( 79,82,65.82,79,76,82,79,B2, 83,66,67, 83,
1246
460 DATA 84, 65.B3, 84,88, 83,84,89,144,176,240,48, 208,16, 80,
112, 1684
470 DATA 24,216,88,184,202,136,232,200,72,8,104,40,64,96,56,
248, 1970
480 DATA 120.170,168,186,138,154,152,234,0,0,11,22,33,44,55,
66, 1553
490 DATA 77,88,99, 110,121, 132,143,154,165,176,187, 19B,209,
220,231,242, 2552
500 DATA 255,169,255,141,174,2,32,121,0,240,3,32,21,130,32,
201, 1808
510 DATA 128,32,18,130,32,228,255,240,251,201,13,208,241,
108,2,3, 2090
210, 1860
720 DATA 255.169,2,96,169,41,32,210,255,32,62,127,169,89,32,
210, 1950
730 DATA 255,169,2,96,173,2,2,32,15,130,173,1,2,32,15,130,
1229
740 DATA 169,41,32,210,255,169,3,96,177,20,141,1,2,169,2,
N133, 1620
750 DATA 91,32,70,127,32,119,127,32,65,127,32,65,127,165,20,
24, 1255
760 DATA 105,2,133,253,165,21,105,0,133,254,173,1,2,48,14,
24, 1433
770 DATA 101,253.133,253,165,254,105,0,133,254,76,178,128,
169,0,56, 2258
780 DATA 237,1,2,133,3,165,253,56,229,3,133,253,165,254.233,
0, 2120
790 DATA 133,254,165,254,32,15,130,165,253,32,15,130,96,24,
101,20, 1819
800 DATA 133,20,165,21,105,0,133,21,96,169,0,133,2,133,90,
520 DATA 165,90,201,1,144,7,201,5,176,10,76,28,127,169,1, 133, 1354
aif\ data ai
133. 1534
530 DATA 91,76,70,127,201,8,144,18,201,10,240,14,169,2,133,
91, 1595
540 DATA 160,1,177,20,141,1,2,76,70,127,169,3,133,91,160,1,
1332
550 DATA 177,20,141,1,2,200,177,20,141,2,2,76,70,127,169,44.
1369
560 DATA 44,169,32,76,210,255,32,65,127,32,65,127,173,0,2,
32, 1441
570 DATA 15,130,166,91,224,1,240,19,173,1,2,32,15,130,166,
91, 1496
580 DATA 224,2,240,13,173,2,2,32,15,130,96,32,65,127,32,65,
1250
590 DATA 127,32,65,127,76,65,127,32,65,127,32,65,127,166,2,
160, 1395
600 DATA 0.138,24,10,101,2,170,189,0,126,32,210,255,232,200,
192, 1881
610 DATA 3.208,244,96,32,65.127,32,65,127,165,90,208,8,169,
65, 1704
620 DATA 32,210,255,169,1,96,201,5,176,60,201,1,208,19,169,
35, 1838
630 DATA 32,210,255,169,36,32,210,255,173,1,2,32,15,130,169,
2, 1723
640 DATA 96.169,36,32,210,255,173,1,2,32,15,130,165,90,201,
2, 1609
650 DATA 240,236,72,32,62,127,104,201,3,208,3,169,98,44,169,
89, 1847
660 DATA 32,210,255,169,2,96,201,8,176,46,72,169,36,32,210,
255, 1969
670 DATA 173,2,2,32,15,130,173,1,2,32,15,130,104,201,5,208,
1225
680 DATA 3,169,3,96,72,32,62,127,104,201,6,208,3,169,88,44,
1397
690 DATA 169,89,32,210,255,169,3,96,72,169,40,32,210,255,
169,36, 2006
700 DATA 32,210,255,104,201,10,240,44,72,173,1,2,32,15,130,
104, 1625
810 DATA 91,32,65,127,165,21,32,15,130,165,20,32,15,130,32,
65, 1137
820 DATA 127,160,0,177,20,141,0,2,201,255,240,45,162,0,221,
168, 1919
830 DATA 126,240,8,232,224,33,144,246,76,75,129,134,2,224,8,
176, 2077
840 DATA 9,200,32,104,128,169,2,76,189,128,169,1,133,91,32,
70, 1533
850 DATA 127,32,119,127,169,1,76,189,128,169,1,133,91,32,70,
127, 1591
860 DATA 32,65,127,32,65,127,169,66,32,210,255,169,89,32,
210,255, 1935
870 DATA 169,84,32,210,255,32,65,127,32,65,127,169,36,32,
210,255, 1900
880 DATA 173,0,2,32,15,130,169,1,76,189,128,162,0,221,3,125,
1426
890 DATA 240,8,232,224,253,208,246,76,25,129,138,133,90,162,
33,221, 2418
900 DATA 168,126,144,7,240,6,232,224,23,208,244,202,134,2,
165,90, 2215
910 DATA 56,253,168,126,133,90,32,0,127,32,119,127,32,148,
127,76, 1646
920 DATA 189,129,255,255,255,255,255,255,255,255,255,255,
255,255,255,255, 3B87
930 DATA 32,30,171,169,157,160,129,32,30,171,76,215,137,13,
10,77, 1609
940 DATA 65,67,72,49,32,68,73,83,65,83,83,69,77,66,76,69,
1097
950 DATA 82,32,69,88,84,69,79,63,73,79,78,13,10,86,69,82,
1075
960 DATA 83,73,79,78,32,51,46,53,32,69,88,84,13,10,40,67,
898
970 DATA 41,32,83,46,68,46,67,46,47,89,46,67,46,32,79,67,
902
980 DATA 84,79,66,69,82,32,49,57,56,53,13,10,0,0,255,126,
1031
20
FOR JUST
NORMAL RATE . . . £16.60
A subscription to YOUR COMMODORE
magazine is a gift twelve times over!
Whether the subscription is for a friend, relative
or a treat for yourself, YOUR COMMODORE
provides the reader with the latest Information
and developments on the Commodore range
of computers.
Delivered each month straight to the comfort of
your own home, could a Commodore
enthusiast wish for anything better?
(This offer lasts until 28.2.86 and applies to readers In the United
Kingdom only.)
SUBSCRIPTION RATES
Yearly overseas accelerated surface post: £21 .50 or U5.S28.00.
Yearly overseas air mail: £57.00
Please return the completed form to:
Your Commodore Special Offer
INFONET LTD
Times House
179 The Marlowes
Hemel Hempstead
Herts HP1 IBB
COMMODORE
Please register the special £13.00 YOUR COMMODORE sub-
scription below:
Name
Address
I would like to arrange a gift subscription to the person below:
(Enter your own name and address above as donor.)
Name _ - ~
Address —
Please commence the subscription to YOUR COMMODORE with
t wm *** * *• •*** p •** ■*»»•****•»• . + * ■ - • * iSS U 0-
I enclose payment of £
(Cheques made payable to Argus Specialist Publications Ltd.)
Please charge my credit card account the amount of £
Card no
Valid from
.to.
Signature
Name
Address
operation for the C16 and
Plus/4 will cut down that
tedious waiting time. By Nick
Hampshire.
A FA5T LOADER IS A ROUTINE WHICH
replaces the existing LOAD and allows a
program or data to be loaded from tape at
about 10 times the speed of a normal
LOAD so a tape can be as fast as a disk
drive.
A fast loader is achieved by simply
changing the format of the pulse
sequence stored on the tape to allow a far
greater density of information storage per
inch of tape.
In order to create a fast load program
two routines are needed. Firstly, a fast
LOAD routine. This is a fairly short
machine code routine loaded at the
beginning of a LOAD operation and auto
run to LOAD the rest of the program
and/or data stored in fast loader format.
The second program required is a routine
to SAVE a program in fast loader format:
the fast SAVE routine.
The first major problem to be
overcome in designing a fast loader is how
to store each bit on the tape. Each bit is
stored on tape as a pulse which goes
through a high-low transition (see Figure
1). The length of the total pulse decides
whether the bit is a 1 or 0. A short pulse is a
0 and a long pulse is a 1. The bit is flagged
in the interrupt register on the falling
edge of the pulse.
The loader is a machine code program*
which runs with the interrupts disabled,
sets a timer between the two lengths, and
when the timer runs out the interrupt
register is checked to see if the pulse came
in or not. If the falling edge of the pulse
generates an interrupt before the timer
runs out then the pulse was a zero, if not,
it was a one. The bits are then rotated into
a byte storage until eight bits have been
read, thereby loading a full byte.
Before any bytes can be read and
stored, the loader must set itself to be in
sync with the bits on the tape. This is done
by writing a string of 0 bits with a single 1
bit at every byte interval. The routine then
tries to align itself by recognising the
value of the byte. An example of a header
byte for aligning would be the value 64,
hex $40 or in binary: 01000000. A series of
these bytes is written as the header. Only
when this byte has been read in and
recognised can the actual program be
read without risk of alignment errors.
The program isstored in different ways
depending on how much program
protection is desired. The simplest way of
formatting the file is to first SAVE the two
byte load address followed by the two
BREAK
THE
WAVEFORM
WRITTEN OUT
WAVEFORM
READ BACK
F = FLAG TRIGGERED ON FALLING EDGE OF PULSE
Figure 1
byte end address and then the actual file.
The final byte following the end of the file
is a checksum calculated by the SAVE
routine and it's also calculated during
loading. If the two values are the same,
the LOAD was successful. The routine for
this form of fast loader is given in Program
1.
Fast tape routines — making
them work
Putting the theory into practice to create
the fast LOADER routines is not difficult.
The actual timing for the SAVE routine
was not calculated from any theoretical
formula but was obtained merely by trial
and error. The only guidelines were that
the short pulse should be slightly shorter
than half the long pulse, since the
waveform of the pulse is evened out by
the cassette hardware. The timing value
used by the loader is just shorter than the
time required before the long pulse
reaches its falling edge.
The high speed tape routine will SAVE
a Basic program to tape in fast format and
automatically put the fast LOAD routine
into the filename where it is stored and,
when loaded, will automatically start on
the warm start vector. The routines are
initialised by SYS(15616). A Basic program
can be fast saved by using the SAVE
command as normal but with a device
number of 7, thus:
SAV£"PROGRAM",7
In addition the fast LOAD also makes
use of the secondary address to auto run a
program, thus:
SAVE"PROGRAM"7,1
This will cause the program to auto run
when loaded back. With both routines,
when a program has been saved using one
of these fast loader SAVE routines it is
unnecesary to LOAD anything before the
program; it will LOAD directly from the
LOAD command.
lQflO 033C
'FRST TAPE SAVE FOR THF COMMODORE 16.
1010 fn?r
' *♦♦♦* + + ♦*****♦♦♦*****+** + **♦♦♦"+♦♦♦*♦
t nc'O 0S3r
;
'THI^ ROUT INF IJT1 1 ^RVF A PROGRAM
, 1 n 1 j twjkj 1 t i>t- hill w*n v c n r i\uvimii i
1040 fl^T
1 TO TAPF 90 THAT WHFN 1 OADFO BACK
1 L>aJV L'.'J 1 -
I TT UTI 1 1 OATl NFAR'I V A^ FA9T AS
1 0f-~0 PIT
1 THF 1S41 T1TSK TiPTVF
! int. 1 Jtl I'lOK lfl\l vt.
1 070 ii^r
j
IAN OPTION FOR AIIT0-RIIN IS
1 f COOL'
1 TNfl IITlFIl
j i fii^ msp
I
1110 stira
lilt 1 Jl'fO
1 ha #<rsAWFr
'CHANGF SAVF VECTOR
■ vl 11 11 • to/ it u V LtoW f v(\
STA ffl^R
W 111 * W*to* to* to*
1 TO GO TO NEW
i 1 - W 1 V 1 T i— t t
1140 3D05 A^3B
LBA tt>SAVVEC
' SAVE ROUTINE
* V* 1 » to- 1 ^to^to> T f * 1 H..
1 150 3D07 8D31C3
STA $0331
1 1 60 3D0A 60
RTS
l* l
1170 3IiGE
|
1 J R0 STI0R
l l-JFTlOF TNT0 THF SAVF COMMAND
: ' ILI'UL 1 It 1 U 1 IIL. v'l] V t- <.>L*I II Hill i.'
11Q0 3D0B
A J _ V-' _ .L — -L
' CHECKS FOR DEVICE *t? AND IF SO/
1200 3DGB
'SAVE IN FAST FORMAT.
1?10 3D0B
!
1??0 3D0R 4A
SAVVEC PHA
12^0 3D0C A5AE
LDA *AE
!GET DEVICE #
1240 3DBE C907
CMP #$07
Wf II PT ^ ■
1 NUMBER 7^
1250 3D 10 FO04
a ^— — — to A — 1 — — ¥
BEQ TSAVE
( VES
1?6m 31112 fift
PI A
1276 STM S 4FA4F1
TMP tF 1 A4
1 DO NORMAL SAVE
. ul* nurti 11 il wi ivt
i ?80 stj l
;
i?Q0 sin 6
I <5flVF THF FII F FIRST THF AUTO
1 too sn i ^
1 Off Oill D
! LUni 1 KUUllflt JO onvtJJ 111 nURI InL
ITftPF FORMAT Ffll 1 OUFTl RV THF FIf F
! IK rriDl rUKiini.
lo30 3D 16
1
Io40 3D lb rlDt»2
Ibnvh LDH
1 mup srvf rtiTipfss
! 1 IUVC 3nVt niJUIxCOO
1350 3D 18 8D7B3F
STA STORE
lofc<U 3D lb H5Bo
LDn *B3
1 07I1 OTi 1 Ti OI>7rOC
13rW 3D ID 8DfC3r
bin SIOKh+1
1380 3D20 A53D
LDH *9D
13y0 3D22 SD7D3F
STA STORE+2
14U0 3D2j H59c
LDH *9c
1410 oD27 8D7E3F
STA STORE+3
14d0 JD2H A-jHD
LDH *HD
IfltTT Ctr OTlTiD
! Ot 1 btL/. niiL'K.
1 4S0 ^n?r ATlRFSF
STR PI IMFI R
IFI AO FOP AIITfl-PHN
1 44R STl?F flfi0F
1 TIV (JiOF
LL> 7 Tf^t'i
1 4 c i0 ^rni fi9?0
1 TlA #$?0
LIT) n?tv
1460 3D33 99C03E
L00P1 STA FLHAME,V
^- - — p A III I kl 11 II II* / 1
'BLANK FILENAME
1 470 3TV>6 fifi
I'll 1 JUwC OW
tifv
i-'L_ T
i4ft0 'iin? 10FA
FPI 1 00P1
1490 3D39 ft4RB
1 TIV f AR
LIT *nc
10FT FII FNAMF 1 FNOTH
' VL 1 1 1 LL 1 if 1 1 IL LLIll 1 1 n
1500 3D3B C011
CPV tt* 1 1
to/a I T» ^ A *
I0RFATFR THAN 16^
1510 3D3D 9002
BCC L00P2
'NO
1520 3D3F R010
LDV #$10
I0NLV 1ST 16 CHARS
1530 3D41 88
L00P2 DEV
1540 3D42 3G08
BMI TSAVE 1
1550 3D44 BlfiF
LDA >;'$AF>,V
! GET FILENAME
1560 3D46 99C03E
STA FLNAME, V
! STORE IT
1570 3D49 4C413B
JMP L00P2
!D0 NEXT CHAR
1580 3D4C
!
1590 3D4C R048
TSAVE 1 LDV #FLNAME-L0ADER
1600 3D4E B9773E
TSAVE2 LDA LOADER-l.V
!GET LOADER BVTE
1616 3D51 99FF06
STA $06FF,V
! STORE IT TO SAVE
1620 3B54 88
DEV
1630 3D55 D0F7
BNE TSAVE2
!F0R ALL BVTES
1640 3D57 201 9E3
JSR $E319
! PRESS RECORD AND PLAV
1650 3D5R R948
LDA #$48
!SET OUTPUT VECTOR TO
1660 3D5C 8D2403
STA $0324
! LOADER
1670 3D5F R903
LDA #$03
Program Listing 1 (cont.)
—
—
1680
1696
1706
1710
1720
1730
1740
1750
1760
1770
17S0
1790
1800
1810
1820
1830
1840
1850
I860
1870
1886
1890
1900
1910
1920
1930
1940
1950
I960
1970
1980
1990
20OO
2010
2020
2030
2040
2050
2060
2070
2080
2090
2100
2110
2120
2130
2140
2150
2160
2170
2180
2190
2200
2210
2220
2230
2240
2250
2260
2270
2280
2290
2300
2310
2320
2330
2340
2350
3B61
3D64
3D66
3D67
3B68
3D6B
3D6D
3D6F
3D71
3D74
3D76
3D78
3D7A
3D7C
3D7E
3D80
3D32
3D34
3B86
3DS9
3H8B
3D8E
3D90
3B93
3D95
3D96
3D97
3D99
3D9B
3B9D
3D9F
3DA1
3DR3
3Dfl6
3BA8
3BRA
3BRC
3DAE
3BB1
3DB3
3DB6
3DB8
3BBB
3DBD
3DC0
3DC2
3DC5
3DC8
3DC8
3BC8
3DC8
3BCB
3DCD
3DD0
3DD2
3DD5
3BD7
3DDA
3DBC
3BDF
3DE1
3DE3
3DE5
3DE7
3DE9
3DEC
3DED
3DEF
v- 1 ±J £— \J V w
STfl
$0325
n— *u i
LDA
#$01
Oft
TAX
AS
TRV
20BRFF
JSR
fFFBfi
R9BC
LDR
#$BC
R?fR
LDX
#<FLNRME
flfWF
LDV
#>FLNRME
?f)F:flFF
1 vJ A- 1 J— 1 |
JSR
$FFBD
LDR
#$00
oj jri
STfl
$9fl
R903
LDR
#$03
v JtO
STfl
$23
A9?4
LBA
#$24
OJwt
STfl
$22
1 i — * —
LDR
#$22
LDV
#$03
fl^26
LDX
#$26
ponaFF
JSR
$FFD8
R94B
LDR
#$4B
81)2493
STfl
$0324
R9EC
LDR
#$EC
8D2503
STfl
$0325
R900
LDfl
#$00
RR
TAX
R8
TRV
85B2
STfl
$B2
R907
LDfl
#$07
'-•JF\
$B3
859E
STfl
$9E
1 BR
#$B0
859D
STfl
$9B
20C83D
JSR
FSflVE
R980
LDfl
#$30
859R
STfl
$9fl
R200
LDX
#$00
R000
LDV
#$00
AD7B3F
LDfl
STORE
85B2
. STfl
*B2
RB7C3F
LDfl
ST0RE+1
85B3
STfl
$B3
RD7D3F
LDfl
STORE+2
859D
STfl
$9B
AD7E3F
LDfl
STORE+3
859E
STfl
*9E
20C83D
JSR
FSflVE
4C0387
JMP
$8703
!SET FILE DETAILS
!SET FILENAME DETAILfl
! DISABLE 'SAVING'
SAVE $0324
! TO $0326
I SAVE IT
! RESET OUTPUT VECTOR
IFRST SAVE $6700
! TO $07B0
ISftVE IT
! RESTORE SAVE ADDRESS
! OF MAIN FILE
!
!THE FAST SAVE STARTS HERE
20123E
i
FSflVE
JSR
WRTHBR
A5B2
LBA
$B2
20403E
JSR
WRTBVT
A5B3
LDfl
$B3
20403E
JSR
WRTBVT
A59D
LDfl
$9D
20403E
JSR
WRTBVT
A59E
LDfl
*9E
20403E
JSR
WRTBVT
84B4
STY
$B4
A4B2
LDV
$B2
A900
LDfl
#$00
85B2
STR
$B2
B1B2
TSAVLOOP
LDfl
<$B2>,V
20403E
JSR
WRTBVT
C8
INV
D002
BNE
TSAVE3
E6B3
INC
$B3
IFAST SAVE MAIN FILE
IEXIT TO 'READV. '
.'WRITE THE HEADER
(LORD ADDRESS LOW
! LOAD ADDRESS HIGH
!END ADDRESS LOW
!END ADDRESS HIGH
!0NE PROGRAM BVTE
IBUMP PROGRAM POINTER
C1 6 Utility
Program Listing 1 (cont.)
—
—
.
2360 JDrl
L4yu
LrV
» yD
1 DrarucTi Pkin rip
2370 3DF3
R5B3
1 Tin
*T10
*B3
1 C T 1 fO
! FILE?
2o80 3DF5
rrnr
E59E
*yfc
">OQl» "3 TIP "7
t jyo ollr i*
OOPP
ppp
1 onYLUUr
1 KJflT VFT
^tipq
£**ut/ ofry
1 hp
*Rd
•J Oix
LJPTRVT
Wi\ 1 Pi 1
'IJRITF rHFPKSUM
t.JRTRTT
Tl fl^F OFF 1 fiST BIT
ojoia opm
Liin
Hi 1 R
OUkJOr r
0 1 n
*r r 00
1 PF^TflPF c;PPFFN
^ilSti 1Ft1£
OTlOppp
0 1 n
■*FF^F
1 PHM RflPI^ T M
04(TQ QFCiQ
c^du otuy
Llln
Tf»tJO
ICTDP TftPP
• 0 1 Ur 1 rirt
CTQ
O 1 M
Oiipi^ opon
t^OO OCUlJ
CO
DO
CI T
1 QTPPT TPO
OJQfl IFflF
tfjlJ OCtJC
J OK
♦ ppOA
*rro*t
; r<r_oc 1 1 ^ u
tJtlu OC 1 1
IT*
OtJ
o*; i o op * o
— J 1 'J Ot i
■imn orr i o
2520 3E12
78
1 IDTUT1D
CP I
iniCQPi c TDn
! UlontSLC. 1KW
IC^rt IT 1 O
2530 3E13
8D3rrF
STH
»FF3F
! ROn UU I
wcaq op i (T
£J*tO Ot 1 1>
1 TtQ
L.Un
ff+Uo
1 CTRDT TQPF
■ 0 1 nK I I nre
gna or i o
OjU 1
CTQ
i> 1 H
*01
tjoo ofc l n
■ TiO
LUn
ti*L*R
1 Rl Pill' CPPFFkl
cJ f O 1 L>
0 1 n
■tFFR^
*rpoD
ocroia Oplp
ret
up a rip 1
npv
1 POI IQP enp TQPP
ICnUot rUK trirt
oc-Qfl -(rip
fori'
uporipi
1 nrrk" Tn pfapu cppph
tOCU --'Lk-Ll
ftft
00
DFV
iJC. T
Pfilfl '-IF?'*
TlOFfl
vor n
fine
MFPHPl
OCOC* Qpoe*:
1 DA
"*no
1 CTT INITTPI TTMFP
OiTOCl 0C"07
tDOO JCtf
0 1 n
1 Vfil 1 IF TNTfl T?
! V nLUL 111 1 U It
1 DP
tt J 1 u
STfl
>j 1 n
*FF01
2660 3E2F
A910
LDfl
tt$10
•CLEAR TIMER
Jin
JFFQQ
HA4H
1 nv
Li* T
tltdfi
fF»*tt>
inn fi4 T T MFQ
HFftTIP 0
ncniir\ti
1 hm
LUri
an 0
0 7C,o Opoo
JoK
1 IPTR'JT
II IDT TP KJOf IIP 1C
!WKI It VHLUh lb
071 ^P^R
TIP 1 . 1
nap a
RHP
"Till or~or-
2r30 3EoE
LDfl
1 ni m ti ir" l 1 ni i,-vn /-?/
!HND THEN CHHR 'Z
2r4U 3L40
*
tfjnfl
1 IC'TRVT
bin
*Hi)
1 CTDPP riTPI IT RUTP
•t>IUKt UlrUI di 1 1
0"7j"rt Of - <t O
2760 3E42
45B4
EOR
- - A
*B4
•CHLCULHTE CHECKSUM
0~7"?tfl Of** .« .1
2770 3E44
85B4
ATA
STH
*B4
o"7Qia o.Pii*r:
tZfov JL4b
QQQQ
LDfl
W9VO
11 nno Q TTMPC
■ LUUr 0 1 IHtS
07QQ OCjIQ
2ry0 Jh4«
OJflt
STfl
ioUU Jt4M
WBVTE1
ROL
f Dp
! BI 1 IN 1 U LHKKY
opto "^FdP
JSR
I.IPTPTT
wit 1011
II.IPrTP TUP RTT
■ WK lit I nt D 1 I
OOOQ OC'C
DEC
*HL
poor, opsi
tOO'J OCJ1
BNE
°Pi4fl TPS'-*
Of
RTS
PP.SA ^FS4
.'
PP.£fl '■tPSd
WRTBIT
LDX
TT-»DL
1 fl^^l IMF S.HflRT
?Pi7rt ^FSfi
BCC
URTT1
I 1^ c HflRT
9ftflA '-tFSft
t-OOO XJO
QOCC
ritrr
LDX
MJCC
«*rr
1 Pi op CPT I nHfi
WBIT1
JSR
UB T TO
l^FT DIITPIIT HIGH
I St 1 C I-' 1 1 KJ 1 111 \ >l 1
! AND THEN LOW
WBIT2
LDfl
»♦ 1 K»
IIJOTT FflP TTMFP
! wni 1 ruK 1 11 icp*
2920 3E5F
2C69FF
WBIT3
BIT
*FF09
2930 3E62
F0FB
BEG
WBIT3
2940 3E64
48
PHR
2950 3E65
FI900
LDfl
#*00
2960 3E67
8E02FF
STX
*FF02
•RESET TIMER
2970 3E6A
8D03FF
STfl
*FF03
2980 3E6D
68
PLft
2990 3E6E
8D09FF
STfl
*FF09
! CLEAR TIMER
3000 3E71
R581
LDfl
tei
'TOGGLE WRITE BIT
3010 3E73
4902
EOR
#*02
3020 3E75
8501
STfl
$01
3030 3E77
60
RTS
Program Listing 1 (cont.)
304G 3£?5
3050
3E78
1 THF I nflTlFR
' 1 ml LUnL'Cn.
^TfiPTC HFPF
3066
3E78
3070
3E78 A94S
i noriFP
1 flM BtdP
LUn tf»*tO
3080
3E7A 8DFCFF
<^Tfl *FFFP
3090
3E7D A983
I Tift Jitfl')
3100
3E7F 8DFDFF
3110
3E82 8D3FFF
o i n *rr or
1 pdm ni it
3120
3E85 EE19FF
I TNrPFfl^F RflftTlFK' Pfll Al IP
3130
3E88 18
1 TFI I 1 AAT1FR Tfl 'RTS^
3140 3E89 204F63
T^R *B34F
II OAD A FILE
3150 3E8C 8D3EFF
C.TQ ♦FF'SF
1 PflM T N
3160
3E8F A522
1 TIP 4:00'
3170
3E91 8D19FF
CTQ *FF 1 Q
ipfc;ft RnpnFP
3180
3E94 58
n t
1 ^TftPT I Pi?
3190
3E95 203AFF
TCD 4pCOQ
I prcFT fillTPIIT VFf'TnP
3208
3E98 2084FF
TC .R ffFFR4
3210 3E9B A53E
1 T"lH *AF
1 rriMPfiPF rwFr[c^i im^
3220 3E9D C59D
CHP t9Ti
w ■ in * ju
3230 3E9F D019
RMF 1 nrtFRp
1 niFFFRFNT-^l HAD EPPOP'
324Q
3Efll AD4707
1 nfi *R7d7
LL'n *t"f tr
1 PI IN Fl hi",
3250 3EA4 F66E
Dpn rvTT
IPI FAR, RFTIIPM Tfl PFATiV
3260 3EA6 A9FF
1 Tim ttfFF
I TI IRN flFF n IP^flR
. 1 ui\ii urr L»ui*o'- , i'.
3270
3Efi8 3D0CFF
CTQ *FFflP
1 i TI l<5T TM PAQF^
\ > -J 'Jo 1 in L-nOC
3280
3EAB 8D0DFF
CTQ *FFPiri
3290
3EAE 20BE8B
1 PFPFflPM ''PIIW
3300
3EB1 4CDC8B
imp *^Rrip
J fir *or>UL-
■ CACtU 1 1 nfcrt 1 s 1 n 1 tl Itii I
3310 3EB4
!
3320 3EB4 209DSA EXIT
tcp *QQQTi
1 PFPFTrPM P**
3330
3EB7 4C0387
imp tftycn
; Kern.' r .
3340
3EBA
3350
3EBA A21D
LODERR
im FfiP 'i riwri*
3360
3EBC 4CS386
TMP *C'4CQl!
! OUTPUT ERROR
3370
3EBF
338©
3EBF 00
RUNFLG
rT 1 f
1 ("'O TO PI IM P'prn'iPwM
! IU run rrUwnii
3390
3EC0
3400
3EC0
!*=*0337
3410
3EC0
3420
3EC0 202020
FLNAME *
TNT
3430
3ED1
! 17 SPACES
3440
3ED1
!*=*0348
3450
3ED1 AD19FF
LDA *FF19
!SAVE BORDER COLOUR
3460
3ED4 8522
STA $22
3470
3EB6 38
SEC
! TELL LOADER TO 'JMP'
3480
3ED7 78
SEI
! DISABLE IRQ
3490
3ED8
!*=$034F
3500
3ED8 08
PHP
ISAVE STATUS
3510
3ED9 209303
JSR $0393
! READ THE HEADER
3520
3EBC 20B883
JSR *93B8
IREAD LOAD LOW
3530
3EDF AS
TflV
'INTO .V
3540
3EE0 R900
lda »t00
IZERO LOW BYTE
3550
3EE2 85B2
STA *B2
3560
3EE4 20B863
JSR *(J3B3
IREAD LOAD HIGH
3570
3EE7 85B3
bTA fB3
3580 3EE9 20B863
JSR J83B8
!READ END LOW
3590
3EEC 852D
STfl *2D
3600 3EEE 20BS63
JSR f 0?EA
3610 3EF1 852E
STA *2E
3620 3EF3 20B803 TLOftDl
JSR *03BS
IREAD BYTE
3630 3EF6 91B2
STA <$B2),V
'STORE IT
3640 3EF8 459E
E0R «9E
! CALCULATE CHECKSUM
3650
3EFA 859E
STA *9E
3660 3EFC C8
I NY
1 INCREMENT POINTER
3670 3EFD D005
BNE TL0AB2
INOT NEW PAGE
3680
3EFF E6E3
INC *B3
I INCREMENT HIGH BYTE
3690 3F01 EE19FF
INC *FF19
1 INCREASE BORDER COLOUR
3700 3F04 C42D
TL0AD2
CPV *2D
IENS OF FILE?
3710
3F66 A5B3
LDA *B3
C1 6 Utility
Program Listing 1 (cont.)
3736 3F0R
90E7
BCC
TL0AB1
'NOT VET
3740 3F0C
20BS03
JSR
$03BS
! REAP CHECKSUM
3750 3F0F
859D
STA
$9B
[STORE IT
3760 3F11
A90S
LBA
#$08
ISTOP TAPE
3770 3F13
8501
STA
$01
3730 3F15
28
PLP
! RESTORE STATUS
3790 3F16
B001
BCS
L0AD1
! CARRY SET, JMP $0700
3800 3F18
60
RTS
IELSE 'RTS'
3810 3F19
4C0007 LOfiBl
JMP
10760
3820 3F1C
i
3S30 3F1C
! *-$ 0393
3840 3F1C
!
3350 3F1C
A900
LBA
#$00
! START TAPE
3860 3F1E
8501
STfl
$01
3870 3F20
Cft RHEAD1
BEX
IWflIT FOP TAPE BECK
3880 3F21
D8FD
BNE
RHEAB1
! TO REACH FULL SPEEB
3890 3F23
88
BEY
3900 3F24
B0FA
BNE
RHEAB1
3910 3F26
849E
STV
$9E
!ZERO CHECKSUM
3920 3F28
R200
LBX
#$00
3930 3F2A
2OC603 RHEAD2
JSR
$03C6
! REAB BIT
3940 3F2D
26flC
ROL
$flC
IINTO BYTE
3950 3F2F
A5AC
LBA
$AC
3960 3F31
C910
CMP
#$10
! VALUE 16?
3970 3F33
D0F5
BNE
RHEAB2
!N0
3980 3F35
20BS03 RHEAP3
JSR
J03B8
! REflB BYTE
3990 3F38
C910
CMP
#$10
! 16?
4000 3F3A
F0F9
BEG
RHEAB3
IVES
4010 3F3C
C95A
CMP
#$5fi
ICHflR 'Z'?
4020 3F3E
BOEA
BNE
RHEAB2
!N0, TRY flGftIN
4030 3F40
60
RTS
4040 3F41
4050 3F41
! *=$03B8
4060 3F41
4070 3F41
A901
LDfl
#$01
!SET FOR 8 TIMES
4080 3F43
85AC
STfl
$AC
4090 3F45
20C603 GBVTE1
JSR
$03C6
IREftB BIT
4100 3F48
26AC
ROL
$AC
! INTO BYTE
4110 3F4A
90F9
BCC
GBVTE1
4120 3F4C
A5AC
LBfl
$AC
! LOAD BYTE
4130 3F4E
60
RTS
414R ^F4F
h l -jfcj or *tr
! *— »UoL-D
AiCCt QFdF
not) or**r
1 TlH
at t ft
*r l Ov Or O I
04(> 1 ftp T T 1
PT T
* m KJ 1
IIJATT FfiP INPUT
! wn i i r 'jf\ i ur i
*t I ?f Or Oo
fiPI T»
f LOW
4200 3F5S
BIT
•WAIT FOR INPUT
i f or o f
FOFP
r ur t<
i' i i &
' HIGH
tcctj or jj
t^c^r r
ni 11.'
I TF^T TIMFR
i t»' i ill 1 1— r\
"cot- 1 or ji.
r ur.
rnn
i rip
HtMl
>PFftFT TIMFP
' • C OIL 1 111 'l-r-
4250 3F5F
l_ L 1 n
ttf 7ft
4260 3F61
8E02FF
STX
$FFn2
4270 3F64
8D03FF
STfl
$FF03
4280 3F67
A910
LBfl
#$10
i CLEAR TIMER
4290 3F69
8D09FF
STfl
$FF09
4300 3F6C
AD19FF
LBfl
$FF19
! INCREMENT BORBER
4310 3F6F
18
CLC
! LUMINANCE
4320 3F70
6910
ABC
#$10
4330 3F72
8D19FF
STA
$FF19
4340 3F75
68
PLfl
! GET TIMER STATUS
4350 3F76
0A
flSL
fl
! SHIFT INTO CARRY
4360 3F77
0fl
ASL
fl
! IF TIMER RAN OUT,
4370 3F78
0A
ASL
fl
! CARRY SET, BIT WAS
4380 3F79
0A
ASL
A
! fl '1' ELSE fl / 0"
4390 3F7fl
60
RTS
4400 3F7B
(
4410 3F7B
8000OG STORE
BVT
0-0,0,0
27
C1 6 Utility
Program Listing 2 BASIC Loader
1 000
1B10
1020
1030
1040
1050
1060
1070
1080
1090
1100
1110
1120
1130
1140
1150
1160
END
1170
1180
1190
1200
1210
1220
1230
1240
1250
1260
1290
1300
1310
1326
1330
1340
1350
1360
1370
1380
1390
1400
1410
1420
1430
1440
1450
1460
1478
1480
149Q
1500
1510
1520
1530
1540
1550
1560
1570
15S0
1590
1600
1610
1620
1630
1640
1650
1660
REM ***#*******#****#*#***********
REM # FAST SAVE ROUTINE FOR THE *
REM *C0MMODORE 16. THIS ROUTINE *
REM #USES UP ONLV 758 BVTES OF *
REM *BflSIC MEMORV. *
REM * *
REM * COPVRIGHT 1985 *
REM * ZIFRA SOFTWARE LTD. *
REM * #
REM ***######*********#*#******#*#
POKE 51,0= POKE 53,0-POKE 55,0= POKE 52,61 :P0KE 54,61 :POKE 56,61 :CLR
I=DEC<"3D00") =T=0
READ A: IF A=-l THEN 1150
POKE I,A'T=T+A
1=1+1 :GOTO 1120
IF TO74750 THEN PRINT"W«;HECKSUM ERROR : "T"SHOULD BE 74750": END
IF IO'DEC<"3F7B"> THEN PR I NT " JSftNUMBER OF VALUES ERROR :"I"SHOULB BE 16251":
PRINT"MM DATA ENTERED CORRECTLV. "
PRINT"TO FAST SAVE A BASIC PROGRAM
PR I NT" Kti SAVE"CHR$(34) "FILENAME
PR I NT "M OR K3AVE"CHR*<34) "FILENAME
SVS DECC"3D00"):END
DATA169, 11,141, 48,3, 169,61
DATA141,49, 3, 96, 72, 165, 174
DATA201 , 7, 240, 4 , 104, 76, 164
DATA241 , 165, 178, 141 , 123,63, 165
DATA179, 141, 124,63, 165,157,141
DATA125,63, 165, 15S, 141, 126,63
DATA165, 173, 141, 191,62, 160, 15
DATA169,32, 153, 192,62, 136, 16
DATA250, 164, 171 , 192, 17, 144,2
DATA 160, 16, 136,48,8, 177, 175
DATA153, 192,62, 76,65,61 , 160
DATA72, 185, 119, 62, 153, 255, 6
DATA 1 36 , 208 , 247 , 32 , 25 , 227 , 1 69
DATA72, 141 , 36, 3, 169, 3, 141
DATA37, 3, 169, 1 , 170, 163, 32
DATA186,255, 169, 188, 162, 192, 160
DATA62,32, 189,255, 169,0, 133
DATA 1 54 , 1 69 , 3 , 1 33 , 35 , 1 69 , 36
DATA133,34, 169,34, 160,3, 162
DATA38, 32, 216, 255, 169, 75, 141
DATA36, 3, 169, 236, 141 , 37, 3
DATA169,0, 170, 168, 133, 178, 169
DATA7, 133, 179, 133, 158, 169, 176
DATA133, 157, 32, 200, 61 , 169, 128
DATA133, 154, 162,0, 160,0, 173
DATA123,63, 133, 178, 173, 124,63
DATA133, 179, 173, 125,63, 133, 157
DATA 173, 126,63, 133, 158,32,200
DATA6 1 , 76 , 3 , 1 35 , 32 , 1 8 , 62
DATA 165, 178,32,64,62, 165, 179
DATA32, 64 , 62, 165, 157, 32, 64
DAT A62 , 1 65 , 1 58 , 32 , 64 , 62 , 1 32
DATA 180, 164, 178, 169,0, 133, 178
DATA1 77, 178, 32, 64, 62, 200, 208
DATA2,230, 179, 196, 157, 165, 179
DATA229 , 1 58 , 1 44 , 233 , 1 65 , 1 80 , 32
DAT A64 , 62 , 32 , 84 , 62 , 1 69 , 27
DATA141,6,255, 141,62,255, 169
DATA8, 133, 1 , 83, 32, 132,255
DATA96, 120, 141 , 63, 255, 169, 0
DATA133, 1,169, 11,141,6,255
DAT A202 , 208 , 253 , 1 36 , 208 , 250 , 1 69
DATA 160, 141,2,255, 169,0, 141
DATA3,255, 169, 16, 141,9,255
DAT A 1 60 , 64 , 1 69 , 1 6 , 32 , 64 , 62
USE:"
"CHR*<34)"
"CHR*C34>"
1670
1680
1690
1700
1710
1720
1730
1740
1750
1760
1770
1780
1790
180O
1810
1820
1830
1840
1850
I860
1870
18S0
1890
1900
1910
1920
1930
1940
1950
I960
1970
1980
1990
2000
2010
2020
2'33Q
2040
2O50
2G60
2070
2030
2090
2100
2110
2120
,7"
, 7, 1 TO AUTO-RUN. "
DATA136,208,248, 169,90, 133, 171
DATA69, 180, 133, 180, 169,8, 133
DAT A 1 72 , 33 , 1 ? 1 , 32 , 84 , 62 , 1 98
DATA172,208,247,96,162,108, 144
DATA2, 162, 255, 32, 93, 62, 169
DATA 1 6 , 44 , 9 , 255 , 240 , 25 1 , 72
DATA169.0, 142,2,255, 141,3
DAT A255 , 1 04 , 1 4 1 , 9 , 255 , 1 65 , 1
DATA73, 2, 133, 1 , 96, 169, 72
DATA141,252,255, 169,3, 141,253
DATA255, 141 , 63, 255, 233, 25, 255
DATA24, 32, 79, 3, 14 1 , 62, 255
DATA 1 65 , 34 , 1 4 1 , 25 , 255 , 83 , 32
DATA138,255,32, 132,255, 165, 158
DATA 1 97 , 1 57 , 208 , 25 , 1 73 , 7 1 , 7
DATA240, 14, 169, 255, 141, 12,255
DATA141, 13,255,32, 190, 139, 76
DATA220, 139,32, 157, 138,76,3
DATA135, 162,29, 76, 131, 134,0
D AT A32 ,32,32,32,32,32,32
DAT A32 , 32 , 32 , 32 , 32 , 32 , 32
DAT A32 , 32 , 32, 1 73, 25 , 255 , 1 33
DAT A34 , 56 , 1 20 , 8 , 32 , 1 47 , 3
DATA32, 184,3, 168, 169,0, 133
DATA 178, 32, 184, 3, 133, 179, 32
DATA184,3, 133,45,32, 184,3
DATA133,46,32, 184,3, 145, 178
DATA69, 158, 133, 158, 200, 208, 5
DATA230, 179,238,25,255, 196,45
DAT A 1 65 , 1 79 , 229 , 46 , 1 4 4 , 23 1 , 32
DATA184,3, 133, 157, 169,8, 133
DATA 1,40, 176, 1,96,76,0
DATA 7, 169,0, 133, 1 ,202,203
DATAi
136,208,250, 132, 158, 162
DATA0, 32, 193,3,38, 172,165
DATA172,201, 16,208,245,32, 184
DATA3, 201 , 16, 240, 249, 201 , 90
DATA203, 234,96, 169, 1 , 133, 172
DATA32, 198, 3, 38, 1 72, 1 44 , 249
DATA 165, 172,96, 169, 16,36, 1
DATA203, 252, 36, 1 , 240, 252, 45
DATA9,255,72, 169, 1,162, 120
DAT A 1 42 , 2 , 255 , 1 4 1 , 3 , 255 , 1 69
DATA16, 141,9,255,173,25,255
DATA24, 105, 16, 141,25,255, 104
DATA10, 10, 10, 10,96,-1
TROJAN
CAD-MASTER
THE ULTIMATE IN GRAPHICS TOOLS
SUPERB GRAPHICS SOFTWARE
PLUS
A TOP QUALITY LIGHT PEN
Discover the exciting world of creating your own
graphics on screen.
• FREEHAND DRAW - 5 pen thicknesses inc. Quills
• PAINT BRUSH - for the artistic touch
• FILL ANY SHAPE - use 1 6 colours and 1 1 patterns.
• GEOMETRIC SHAPES - circles, boxes, triangles, lines
& banding.
• DYNAMIC RUBBER BANDING on all geometric options.
• PIN-POINT FUNCTION - tor pixel accuracy on all .unctions.
Plus many more too numerous to mention in this ad. All these
features in the Program + a top quality Light Pen and an
Instruction booklet in one reasonably priced package. Easy to use
for creating colourful, pictures or technical drawings. Ideal for use
by all ages of micro users. Full back-up service from
manufacturers. Available at good dealers or direct
from Trojan Products.
Micro Computer Software A Accessories
Send cheque/P.O. to.
TROJAN PRODUCTS
166. Dertwyn. Dunvant. Swansea SA2 7PF
Tel: (0792)205491.
TRADE ENQUIRIES WELCOMED
I VSiii ;:ni !
COMMODORE SOFTWARE SPECIALISTS
Voicemaster by Annog II Of d) 6196
3 Channewe Adventu
Amu on (4 disks)
RRP 2U
dfw Database by Dialog
Home Accounts Manager
Superbase 64 by Precision special
S^'Ukne Sla'te' 39.95
Superscript Special 69 95
Triangle (int. DB SS WP} 19 96
Vuasta- 64 XL4 99 96
Aipna Build
Commodore O' Level Subject*
Donald Duck's Playground NEW
French Mistress A A B (each)
r,c -nil- vasts* asb [each]
Oet Ready to Read(3yrs-((4 I
Mr T seres (4-9yrs)
96
995
9 96
895
695
)11.96
995
17.00
14.95
69.95
3595
57.95
17.95
8900
8.50
8.75
8-50
JM
750
9.95
8.50
B«tt<e of Britain Nfw
Carrier Force NEW 59.95
Combat Leader & Battle lor Nmdy'
FieiQotF-e NEW 39 95
Germany 1965 NEW
Kennedy Approach' NEW
Spitfire Aoe"
SuDloglc Flight Simulator II
SuWogiC Flight Simulator II
Theatre Europe'
Knights ol the Desert
747 Flight Simulator (Oocaoft)
59 96
14.95
49 95
995
19.95
13
8.50
52.50
19.95
35.60
49.95
12.75
8.50
35.95
B.60
17.25
10.45
re* Special
19.96
Dragonwortd (5 disks) 19.95
Hrtcn-Hiker'a Guide to the Gaia«y3' 50
Lord Ol the RingaT
Never Ending Story
PianetfaH by infocom
Rod Moon
Sea* of Blood
Seas u Her by Infocom
Ultima III
Ultima IV
Wishbringer by In
orm in Paradise
Fight Night"
Goon tea 1
possible Mission*
Little Computer People"
Lord* of Midnight
Mercenary*
Monopoly"
Racing Destruction Set*
Rescue from Fractutu**
ScaloxtrSe*
Scrabble*
Spy va Spy I or II (Island
Starion
Strip Poker"
Summer Games I* or II'
Superman*
They Sold a Million"
Wmter Games'
NEW
NEW
NEW
NEW
NEW
NEW
NEW
18 95
995
47 50
696
996
38 75
1996
62 00
37 60
996
15.00 1
18.00 d
18.00 d
24.96 d
13.75 d
850 t
19.95 d
5.95 t
8.50 d
19.95 d
18.00 d
55.00 d
32.50 d
850 I
d
95
9.96
NEW 995
95
NEW 996
12.95
NEW 1196
NEW 995
NEW 996
1296
Capor) 995
NEW
96
11Q
1050 I
850 1
850 •
11 BO I
Elecirosound NEW 14.95
Jetpac* Compiler* 14.96
LOGO Special 34 95
Machine Code Tutor 14 96
SIMON'S BASIC Special 49 95
Suoe>
Mi ta i m
j>e d - diskette c : ROM cartridge '- Disc version .
HUNDREDS MORE TITLES AVAILABLE — ALL AT DISCOUNT PRICES
MOST C16 PLUS 4 and C121 tides available — ALL win similar discounts to C64*"
Please send stamp for our complete list (state wh>cn computer)
include 50p for Post and Packing for ail orders less than £20 Outside UK please include CI
us 75p for each additional item on all orders. Send Cheque. Eurocheque. Sterling money order
or UK Postal Order with order to:
PO Box 36
DUNSTABLE
UK SOFT CENTRE LTD (YC)
Telephone:
DUNSTABLE
(0582) 607929
Electronic Aids (lewkesbury) Ltd.
Accounting and Educational Software
For Commodore 64 and 128
SALES LEDGER with invoicing £98.00 + VAT
Invoices laid out to your own design, statements, aged analysis,
daybook, period and VAT report, label printing etc. etc.
FINAL ACCOUNTS £60.00 + VAT
Nominal ledger with inputs tor sales, purchases, cash and
journals, allows you to structure your own reports e.g. profit &
loss, balance sheet, department report etc. Complete audio trail,
trial balance, opening balances, last month's trial balance,
monthly totals on all accounts etc.
PURCHASE LEDGER £69.00 + VAT
Sales ledger, purchase ledger and final accounts (as above) all
combined into one integrated package.
INTEGRATED ACCOUNTS £195.00 + VAT
Sales ledger, purchase ledger and final accounts (as above) all
combined into one integrated package.
SEVENPACK £45.22 + VAT
A simple integrated package for very small businesses. Purchase
& Sales Control, invoicing, simple nominal ledger, statements,
ordinary stock control, stock control for car parts and address
label printing.
PAYROLL with new Nl rules £99.50 + VAT
Easy to use. but allows 7 overtime/ piecework rates, 4 pre-tax
adjustments incl. SSP. 6 after-tax adjustments, deduction card,
coinage analysis etc.
ELECTRONIC AIDS LTD.
62 High Street, EVESHAM,
Worcs. WR11 4HG
Phone 0386 - 49339
Money back on any Item returned within 21 days.
TAPE BACK-UP DEVICES FOR VIC 20 CBM 64 C128
DCL1 The DC LI links t*o Datasette*. so mat a back-up can oe made directly from
INTERFACE one datasette to a second datasette without the program entering the
computer No software needed Backs-up ALL programs including Turbos etc
' Thousands sold ' ORDER AS DCL 1 PRICE £10 00
OCL4 You can made a back-up copy on either a second datasette OR on a standard
INTERFACE audio recorder with this interface without the program entering the computer.'
No software needed A LED data monitor shows the start & end of programs.
Back*- up ALL programs including Turbos etc
• Very Popular * ORDER AS DCL 4 Price El 7O0
NOW WITH IMPROVEO CIRCUITRV
DCL4A SIMILAR lo the DCL* but tiled with an Audible data monitor.
INTERFACE "NEW" ORDER AS DCL4A PRICE £1850
NOW WITH IMPROVED CIRCUITRV
OUR CATALOGUE
TAPE HEAD DEMAGNETISER. Mains |
AZIMUTH ALIGNMENT CASSETTE
DATASETTE DUST COVER
SUPER TAPE HEAD CLEANING KIT
GT LOADER 1541 FAST DISK LOADER CART
GT LOADER as above with reset swtcn
DISK DRIVE DUST COVER
DISK DRIVE HEAD CLEANING KIT
CENTRONICS INTERFACE (user port type)
THE STICK. BASELESS JOYSTICK
QUICKSHOT MK11 JOYSTICK
JOYSTICK EXTENSION LEAD (3m long)
CIS JOYSTICK ADAPTOR
TWIN OUTLET MAINS INTERFERENCE FILTER
CBM 64 SCART TV/MONITOR LEAD
CBM 64 SCART. FERGUSON MCOl LEAD
COMPUTER/ AERIAL SIGNAL COMBINER
PAPER. FAN FOLD. TEAR OFF. 500 appro"
PRINTER LABELS 89'36mm PER 1000 appro>
Order no
Ofdjes IM
Order no
Order no
Order no
Order no
Order no
Order no
Order no
Order no
Order no
Order no
Ordtt no
Order no
Order no
Order no
Order no
THD1 £6 30
DHA1. £7.50
DC01 C3 45
CLK3 £5 95
GTL1. £20.00
GTL2 £2200
DOC1. £4 55
CLK1 £5 49
PPII. £17.95
JTSl £12 95
JOM1 £1195
JSC? £695
JSC! £425
MPC1 £20 95
TML7 £4 49
TMLfl £299
TM124 £2 49
C128 RGB TO VIDEO ADAPTOR ENABLES YOU TOUSEONE TV OR MONITOR IN ANY MODE.
SWITCH SELECTS BETWEEN VIDEO & RGB OUTPUTS VERSIONS AVAILABLE FOP
MONITOR AND/OR TV. SAE FOR DETAILS. FROM £29.95.
FAST CBM 64 REPAIRS "
STANDARD SERVICE INCLUDING PARTS. LABOUR. POSTAGE. VAT £27 50
EXPRESS SERVICE AS ABOVE BUT RETURN OF POST SERVICE 13* SO
REPLACEMENT CBM 64 POWER PACKS £29 50
1541 DISK DRIVE ALIGNMENT FULLY INCLUSIVE £14 90
Please state faults The above prices cover electrical parts, replacement keyboard, case, peb or
power supply extra
FREE CATALOGUE, Please send 17p stamp
FAST MAIL ORDER SERVICE. ALL PRICES FULL INCLUSIVE " _
PLUS 10 DAY MONEY BACK GUARANTEE ON BACK-UP DEVICES "
Cheaper price* I
availability
callers to our shop at 329 Tong Street. Bradford 4. Please phone f .ret to check
PAYMENT ACCEPTED BY. CASH. CHEQUE. PO. MONEY ORDER. BANKERS DRAFT.
TPANSCASH (For Transcash order and pay at any Post Office, our account no. is 660 3659
EXPORTS. Please add £1 00. payment in sterling only please
TRILOGIC (Dept YC) 29 HOLME LANE, BRADFORD
BD4 0QA Tel: 0274 684289
BEFORE LAUNCHING FORTH THIS
month - a small confession. I've been
writing this column for several months
now and though my teaching qualifica-
tions are verifiable, the same cannot be
said for my programming skills. I
therefore decided that it was about time I
rectified the situation by learning how to
program in Basic. I soon discovered that
this is not as easy as it would seem. The
first question is to establish the best
method of learning. Three approaches
immediately spring to mind.
The first is to sign up at a local school or
college for night classes. These are
available for a number of languages with a
bias towards BBC Basic. There are a
number of snags however. Night classes
are limited to the older age groups
making them unavailable to youngsters.
They also cost money.
If you want to use this route, you are
constrained by a fixed timetable and term
length. You must also learn what the
teachers choose to teach. Some teachers
have a strange idea as to what material a
student needs. My sister is currently
struggling through the mysteries of binary
and hexadecimal as part of her course on
Basic! If she was learning machine code I
could understand it, but not for Basic. It's
a good idea to find a course which offers
some practical work as well as lectures so
that you can get hands on experience with
the help of the teacher.
A second approach is to find a home
based course and work through it under
your own steam. The alternatives are
either a correspondence course, if you
can find one, or a book/software
package. The main drawback with this
method is that if you get stuck, you don't
have anyone to bail you out.
Alternatively, you could find a tutor.
There are always knowledgeable
enthusiasts around who would spend
some time passing on information for a
small sum. The problem is finding them.
Probably the best approach for most
people is to combine the latter two.
This month I intend to look at a
number of book/software systems
currently available.
Most of you will have discovered the
lack of help provided when you buy a
Commodore machine. The C-16 does
come with a Basic tutor but this is more of
a sales gimmick. The actual manuals are
next to useless. This is rather strange when
you consider the tuition provided with
other products. Many manufacturers of
knitting machines and musical instru-
ments provide lessons or other teaching
material included in the price. Why can't
computer manufacturers do it too?
One small word of warning. A large
number of publishers have spotted the
short comings of the Commodore
manuals and have produced books
teaching Basic and the inner workings of
the computer. Many of these books are
hardly any better than the Commodore
manuals and you should purchase with
care.
As a preliminary guide, I shall describe
a number of packages covering different
age-groups and prices.
Commodore offers a package for the
Vic-20, C64, C-16 and Plus/4 called An
Introduction to Basic. Whilst orginally
sold as a separate package, it has sub-
sequently been offered in the various
Starter Packs. You may be able to locate it
separately if you look hard enough or
contact Commodore.
The package comprises of two
cassettes and a book. The manual is set out
as a series of experiments which are
linked to programs on tape. The material
ranges from setting the computer up to
fairly advanced programming. I was
pleased to see the frequent use of flow
diagrams to demonstrate the operation of
the programs. The approach is structured
so that you must cover the early material
before progressing through the manual.
Overall it's quite a reasonable system
which does its job well enough.
For the younger users, Collins offers a
book entitled DATA LOG. This is a work
book which has the appeal of a simple
approach. Each page gently leads the user
through the maze of programming,
sprites and sound. The entire book is
written in the form of a space ship's log
with each section or exercise adding to
the scenario. For example using screen
printing and tabulation for the passenger
list, IF.. .THEN for ticket details and using a
sprite to design the captain's badge. The
material is not covered in great depth but
the book gives a good introduction to the
use of Basic. At £2.95 it's also good value
for money.
Glentop Publishers has a wide range of
teaching books and book/software
packages available for a number of
Commodore machines. Originally
starting with the Dr Watson series of
books for Basic and machine code,
Glentop moved on to the Watson's Notes
series for the C64. This is a six book series
which deals with most facets of the C64.
The early volumes cover programming in
Basic moving on to graphics in the later
parts. The layout of the material is clear
and tidy and is handled in a logical
manner. If I do have a complaint it is that
the content of the books is perhapsa little
thin. At £2.95 per volume, I would have
expected a little more depth. Notwith-
standing this drawback, the series is well
worth a close look.
Another good quality product from
Glentop is Basic Adventure Part 1. This
book/software package teaches the rudi-
ments of Basic to the seven to 11 age
group. The book takes the form of a
science fiction story involving Dr Watson.
Programming concepts are introduced in
small routines which compliment the text.
Overall a novel and effective way of
camouflage teaching programming.
Commodore 64 Basic from Wiley is a
meaty introduction to Basic. This is part of
a Self Teaching guide series and uses self
checking and exercises to aid you. The
material covered is much as expected
covering all facets of Basic, graphics and
sound. Flowsheets are used extensively
helping the pupil to develop a logical
approach to programming. The book is
sufficiently comprehensive that even
once you have mastered programming in
Basic, there are more advanced areas to
look at. This is exemplified by the section
on databases and data storage on disk and
cassette. The author is clearly American
and this does unfortunately become
apparent in the text with the introduction
of trans-Atlantic colloquialisms. Provided
you can stand the literary style, it's book is
pretty good value albeit a little pricey.
For C-16 owners, Shiva offers the
Gateway to Programming series. This
quartet of books tackles the subject in a
similar manner to the Dr Watson series
by using Sherlock Holmes stories to
illustrate ideas. The text is humorous with
lots of cartoon illustrations. In spite of the
£4.95 price per volume, these are good
value for money and worth a look.
Doming Kindersley produces a Com-
modore 64 Starter Pack consisting of
books one and two of their Screen shots
books and a typing tutor cassette. The
screen shots are full colour pictures of
listings as they appear on the monitor and
illustrations of the results you can expect
from the program. The books step gently
through learning Basic and the cassette
should help you to get to grips with the
keyboard. The boxed set costs £15.95 but
if the price is off-putting each book in the
set can be bought separately.
All of the books described here have
the virtue of using a well thought out
approach to teaching Basic. In addition
most are cheap and almost within pocket
money range.
7\
■■I F -
for;-
* Spectrum
* Amstrad
4 Commodore
64/128
Computer Owne>
YES.... place an order for our magazine and we'll send you one of the above games absolutely free. We
will also enrol you in our Discount Software Club enabling you to purchase software £t utilities at huge
savings over shop prices. We offer all the latest titles at up to £4 off shop prices (see panel for details)
plus many older products at pocket money prices. In all we carry over 300 titles each for the Spectrum,
Commodore 64 and Amstrad.
E HOW YOU SAVE WITH
SOFTWARE BONUS PRICES
Mitt
Shadow ol the Un.com 14 96 11.46 O.W
Elite 14 96 10.96 (4.00
Fighting Wa.ru- 7 96 6 96 f? 00
Spy* Spy 9 96 6 95 C3.00
'ou Oli 9 96 6 96 f 3 00
Frank Bruno'* Baiing 6 95 3 95 □ .<»
Monty on the Run 796 6.96 (3.00
Way ol rtm Eipluhng Fiu 9 96 6 95 d WO
Critical Md» B 95 5 95 f 3 00
St- quo*., 7 95 5 95 Q 00
MmM Kanti 6 so 4 so n.oo
Wlvinmf-.Wiri-.ii 796 546 O 50
Mimry on Hie Run 9 35 6 96 0.00
W«.ter Cirnrs 9 96 7 96 BM
Way ol the Exploding Bsi 9'96 6 96 CJ 00
Spy V Spy II 9.96 5 96 (4.01
tin- 14 96 11 46 O 00
AC( 10 95 7 95 O 00
I.omJs ol Midiiiijiii
3D Grand Ptii
Battle of Bniam
\" ■ . ■■
Match Day
Souls of Dakton
99b
B 96
995
9.95
8 9b
695
695
795
695
6 4b
n 00
D.00
f? DO
O 00
(7.50
(3.00
SIX MAGAZINES A YEAR
A subscription of just £5.00 will bring you
six magazines a year through the post.
Each magazine is packed with reviews of
all the latest software, reader's game play-
ing tips, competitions to enter, our
reviewer's personal choices and a summary
of how the other magazines rate the new
releases.
HARDWARE AND UTILITIES
SUPPLEMENT
Every new subscriber to the magazine gets
a 24-page review of some of the more
popular utilities — such as word process-
ing software — and hardware including
joysticks and Spectrum interfaces.
HOTLINE KEEPS YOU UP TO
DATE
Subscribers to the magazine can 'phone
our 24 hour Hotline for up to the minute
news of the latest releases. A three minute
recording, updated weekly, details the new
titles and their prices. Credit card holders
may order by phone too 1
EASY ORDERING - FAST
SERVICE
You can order from our substantial range
as and when you like. There are no
minimum order requirements — you don't
have to buy anything at all. When you do
order we do our best to despatch your
goods within a week - often quicker.
My computer is a:
SUBSCRIPTION FORM VC 2/86
Spectrum I I Spectrum ♦ 1 Amstrad ( I Commodore 64 /l 28
I wish to subscribe to your magazine lor the next >2 months and take advantage ol the "Free Game"
offer, for which I enclose C5 plus 75p post b packing lor the tree game. The game I would like is:
I (Finders Keepers 1 iSpellbound I I The last V8
(All machines ) (Spectrum only! IC-64 only)
I iChiller I I Chequered Fktg
(Amstrad only) (Spectrum Only)
Nolo: II you would like lo order some ol the games shown in the panel above, list ihem on a separate
piece ol paper and add the total cost to your payment
value f
I unclose a cheque/postal order no
or
please charge my Access/Visa Card No
□□□□□□□□□□□□□□□□
I understand lhat if I am not lurly satisfied with Ihe goods, I may return them within fourteen days
(or a lull rotund ol Ihe cost ol the games and I he Magazine subscription.
Name (BLOCK CAPS!
Address
' Eaport Customer*: We welcome orders Irom all parts ol the world, please note the following
subscription and postage rates outside UK : Europe Subscnplion C7.00. Post f?. U.S.A. and Mm 1
die East - Subscnpbon f9, Post f3; Australia, Far East and South Alrica Subscription f 12.00,
Post C4. Please note thai all Magazines are despatched by Air Mail postage lo keep you right up lo date
MR. SOFTWARE LIMITED
KELVIN HOUSE, TOTTERIDGE
AVENUE, HIGH WYCOMBE,
BUCKS HP13 6XG
(0494) 450751
LK Gibson introduces
C64 users to IRQ
interrupts.
What is Multi-Tasking?
THIS TERM IS USED TO DES-
cribe a computer that can run
more than one program at any
given time, each program
being transparent to the other.
Output to the video monitor or
TV screen is usually split so that
windows are formed, each
window being a miniature
version of the normal screen
for each program. This system
of running programs concur-
rently can either be produced
by hardware or software.
In the examples we are
going to consider there are no
windows and the ability to run
two programs is derived purely
from software.
Unfortunately this opera-
tion can only be performed in
machine code, but don't
despair. Basic programmers,
the steps to have two programs
up and running simultaneously
are relatively simple and will be
dealt with in as simple and
concise a manner as possible.
How it Works
When an IRQ occurs your
C64 must know where to find
this block of housekeeping
code. It finds an answer from
memory locations 788 and 789
(HEX $0314 & $315). The two
numbers stored in these
addresses form the INDIRECT
starting address of the house-
keeping code.
You may have noticed
something here. Memory
locations 788 and 789 are
situated in RAM and that
means that the information
stored there can be changed at
will. So before the processor
tells the computer to goand do
the housekeeping we redirect
it to do whatever we want it to
do first. As you now know, IRQ
occurs 50 times every second so
we now have a program that
runs 50 times every second
irrespective of whatever else
your computer may be doing at
the time. This forms the basis
for running at least two
programs concurrently. Now
we shall go on to consider in
more technical terms exactly
how this process is achieved.
As slated earlier, memory
addresses 788 and 789 contain
the INDIRECT address for the
start of the normal INTERRUPT
CODE. Location 788 contains
the low part of the INDIRECT
ADDRESS and 789 forms the
high part of the INDIRECT
ADDRESS. This method of
calculating INDIRECT ADD-
This will give the start address
as 59953 (SEA31). Write down
this address as we need to jump
to it at the end of our own
custom routine, if this is not
done the system will not scan
the keyboard and the result will
be a system crash. Therefore
the last instruction in our code
must be;
IMP $EA31
All of this will become quite
clear later on so don't worry if
you're slightly confused at the
moment. The programs given
later are presented in such a
way that they can be used by
the novice computer owner,
but will also form the basis of
some more advanced INTER-
The way in which we make a
program run apparently trans-
parent to anything that might RESSES goes for any INDIRECT
be running is by making use of
the system's IRQ INTERRUPTS,
this interrupt is called 50 limes
every second (or once every
jiffy).
When an IRQ occurs your
C64 stops whatever it is doing,
whether it's a Basic or a
machine code program and
goes off to carry out its own
little machine code program
Remember, this happens so
fast that it is transparent to the
system. The machine code,
executed during an IRQ, is
simply a housekeeping routine
and doesthingslike SCAN THE
keyboard; upate the
SYSTEM CLOCK etc.
instruction in your program.
This code is fairly standard
for setting up any interrupt
driven software, although
some programmers may wish
to carry out some initialisation
for their program during this
setting up procedure. The
techniques for doing this will
become apparent in later
examples.
The routine as it stands will
be situated in memory
addresses 49152 (HEX $C000),
this is a 4K block of RAM sit-
uated above the Basic INTER-
PRETER. This is a convenient
place away from the ravages of
Basic, but almost any RAM
location may be used providing
you don't clash with Basic or
the SYSTEM VARIABLES. Some
Address
Opcode Operand
Comments
scooo
SE1
disable interrupts
while setting up
SC001
LDA
#$20
set low byte of start
address for code
$C003
STA
$0314
store it at 788 decimal
$C006
LDA
#$C0
set high byte of
address for code
SC008
STA
$0315
store it at 789 decimal
SC008
CLI
allow interrupts again
SCOOC
RTS
return to Basic
$C020
examples given later
JMP
$EA31
jump to standard
interrupt code
ADDRESS used by your
computer, i.e. LOW BYTE/HIGH
BYTE. Therefore, to find an
actual address, we can use the
formula;
AD=PEEK (x)+PEEK (x+1)*256
Where * is the first location
(LOW BYTE) and x+1 is the
second location (HIGH BYTE),
i.e. 788 and 789.
Using this formula we can
calculate the actual address of
the standard INTERRUPT
CODE with;
AD=PEEK(788)+PEEK(789)*256:
PRINTAD
RUPT DRIVEN CODE for the
more experienced amongst
you.
An example of this is to
form windows using RASTER
INTERRUPTS effectively
splitting the screen using one
half for one program and the
second half for your interrupt
code, unfortunately this is
beyond the scope of this
article.
How to Set up
Interrupts
An ASSEMBLY
program to set
LANGUAGE
INTERRUPTS
would go as follows;
$C020 is where your code
begins and IMP $EA31 is the last
useful locations are given
below, although this list is by
no means complete.
$C00O(49152) to $CFFF(53347):
This is the spare 4K RAM
BLOCK situated above the
Basic INTERPRETER. As it is split
from the normal Basic RAM
(2048-40959) it cannot be
affected by Basic, therefore this
is an ideal place for our
INTERRUPT DRIVEN CODE.
Basic RAM $800(2048) to
$9FFF(40959): Code can be
placed at the top of Basic RAM
but unless it is protected it will
be overwritten by Basic
STRING VARIABLES. To
protect this area we must lower
the top of Basic and also lower
the bottom of STRING
STORAGE. The pointers to
c
6
these are stored at 55-56 for
TOP OF Basic and 51-52 for
BOTTOM OF STRING STOR-
AGE. To protect 256 BYTES for
our interrupt code we would
use the program line;
10 POKE52,PEEK(52)-1:POKE
56,PEEK(56>-1
To increase this to 512
BYTES of protected area we
would substitute -2 for -1 in the
above program line and so on
for each 256 BYTES required.
Line 10 as it stands will give
us 256 protected BYTES from
location 40704($9F01) to
40959($9FFF) for our code.
Cassette Buffer 828-1023: This is
the cassette buffer and is totally
safe for disk users but anything
written there will be over-
written by cassette LOAD and
SAVE operations, therefore
cassette users must be very
careful when placing code in
this area.
From the above examples it
can be seen that the easiest and
most convenient addresses to
place code are from 49152
(SCO00) onwards, therefore all
the examples given will use
these addresses.
Making it Work
Each example that follows will
be preceded by a description
of the program and will outline
its purpose, this will then be
followed by a Basic program
containing the necessary code
in data statements (this will
allow users without a machine
code monitor to enter and run
the programs given). Next will
be given an assembly listing
(for those amongst you with
machine code monitors) and
finally each example will be
annotated to show you how it
works.
Fuzzy Border
The following program is the
shortest example that I could
think of. Although it doesn't
really serve any practical
purpose it does give dramatic
example of how INTERRUPT
DRIVEN CODE works. When
this program is complete you
will see no difference to the 64
screen but the exterior border
will be flashing dramatically,
and will continue to do so even
while you enter or load and run
other programs.
Note that all these examples
can be switched off by using
the RUN/STOP and RESTORE
keys together.
Basic Program 1
This is a complete Basic
program and will automatically
boot the code when run. Type
it in exactly as shown, save it for
security purposes and then run
it and behold!.
Disassembled Listing 1 (with
machine code monitor)
If you try to enter Basic code
once a machine code program
has loaded the chances are you
will get an 'OUT OF MEMORY'
error. There is a Basic BOOT
program at the end of this
article that will overcome this
problem.
Hopefully you have now
entered and fully understood
Program 1, if this is not the case
then I would strongly
recommend that you go back
and read the preceding
paragraphs, which should by
$cooo
SEI
disable interrupts
$C001
LDA#$20
load acc with low byte of
indirect address
$C003
STA $0314
store it in low byte of 1 RQ
RAM vector
$C006
LDA#$C0
load acc with with high
byte of indirect address
SC008
STA $0315
store it in high byte of
IRQ RAM vector
$C00B
CLI
enable interrupts again
$C00C
RTS
return to Basic
$C020
LDX # $00
set counter for screen
colours
$C022
STX $D020
store it in border colour
address
$C025
DEX
decrement colour
counter (ie change the
colour)
$C026
BNE $C022
is it done 255 times
$C028
JMP $EA31
if yes then jump to
standard IRQ code
before returning
PROGRAM: BASIC PROGRAM 1
5 REM BASIC PROGRAM 1
10 FOR A=0 TO 12: READ NC
:P0KE 49152*MC:NHT
20 FOR A=0 TO 10: READ NC
:P0KE 49l80A,HC:NEn
30 SYS 49152
40 DATA 120,169,32,141,20,3,
169,192,141,21,3,88,96
50 DATA 162,0,142,32,208,202,
208,250,76,49,234,0
60 PRINT'QK CODE NOW ACTIVE!
1 1 •
If you have machine code
monitor then enter the above
code as shown, again you must
always SAVE code before
executing it, this cannot be
stressed enough. Switch your
64 off and then on again, type
LOAD'"YOUR PROGRAM
NAME'M/I and hit RETURN.
Once the code has completed
loading type SYS 49152 to
activate the code.
now hold a lot more meaning.
That introductory program
wasn't too difficult was it, we'll
move on to some more
practical routines now, so sit
down and prepare yourself to
enter a fascinating sphere of
computer programming.
Using a Vic 1540 Disk
Unit on the C64
If you've seen that bargain
secondhand Vic 1540 Disk
Drive and had to pass it up
because you thought you
couldn't use it on your C64
then this routine is for you. The
1540 disk drive will operate
exactly the same as the 1541
when connected to a 64 apart
from one major problem. It
won't load programs without
you first blanking out the
screen and then opening it up
again when loading is
complete. This is very laborious
and there are in fact two ways
of overcoming this problem.
1 Buy a new 1541 ROM chip
from Commodore for £24 and
try to fit it yourself, or pay a
dealer to fit it at extra cost, or
2 Use this routine!
To use the program F1
blanks the screen and F3 opens
it up again, therefore to load a
program use the following
procedure;
1 Type LOAD"YOUR PROG",8
2 PRESS F1 and HIT RETURN
3 Once the red 'disk in use'
light has extinguished press F3
It's as simple as that!
By the way a more esoteric
way of overcoming the
problem is to blank and open
the screen automatically using
the RAM LOAD and SAVE
vectors, but again that is
beyond the scope of this
article, sorry.
Basic Program 2
Remember to save program 2
before you execute it!
Once you have saved this
program for getting it back in
the computer and up and
running are exactly the same as
that for PROGRAM 1.
If you're still with us and
have at least partly understood
the procedure involved for the
programs above, then you
should by now be starting to
realise some of the weird and
wonderful things that can be
achieved with Interrupt Driven
Code.
We now come to our final
program concerning interrupts
and as you would expect it is
also the most complex we have
dealt with to date.
Defined Function Keys
This program gives us defined
function keys, the keys are
defined as follows:
F1=Change border colour. This
will step through each of the 15
possible colours individually.
F3=Change screen colour. This
will step through each of the 15
possible screen colours in-
dividually.
F5=Repeat keys toggle. This will
toggle between all keys repeat
and cursor keys only repeat.
F7=Processor pacer. This allows
Basic programs to be stopped
in mid run and allows for easy
de-bugging and also a freeze
frame facility. Italso works with
program listings to allow easier
reading. Please note this
should also work with most
m/c programs providing: They This is by no means the most
don't alter the Interrupt complex task that can be
vectors, they don't occupy handled by Interrupts but
memory from SC0O0 to appro* that's all for now, maybe more
$C090, they don't disable some other time editor
Interrupts. permitting!
Basic Program 3
(including initialisation)
Always remember to save
routines before running them
as a crash can be fatal. To
activate the above program just
LOAD the RUN then enter
5YS49152.
Disassembled Listings 2
$C00O SEI
$C001 LDA #$20
$C003
SC006
$C008
SC020
SC022
SC024
$C026
$C029
$C02B
$C02E
$C031
$C033
SC035
$C038
$C03A
SC03D
STA $0314
LDA $C0
STA $0315
SC00B CLI
$C00C RTS
LDA $C5
CMP #$04
BNE$C031
LDA $D011
AND #$EF
STA SD0H
JMP $EA31
CMP #$05
BNE $C03D
LDA $D011
ORA #$10
STA $D011
JMP $EA31
DISABLE
INTERRUPTS
LOAD ACC WITH
LOW BYTE OF
INDIRECT ADDRESS
STORE IT IN LOW
BYTE OF IRQ
RAM VECTOR
LOAD ACC WITH
HIGH BYTE OF
INDIRECT ADDRESS
STORE IT IN HIGH
BYTE OF IRQ
IRQ RAM VECTOR
ENABLE INTERRUPTS
AGAIN
RETURN TO BASIC
GET THE LAST
PRESSED
IS IT THE Fl
KEY
IF NO THEN JUMP
TO NEXT TEST
LOAD ACC WITH
VIDEO CHIP
REGISTER DECIMAL
53265
CLEAR BIT 4
ie set it to zero
PUT IT BACK
ie blank the screen
GO DO STANDARD
IRQ CODE BEFORE
RETURNING
IS IT THE
F3 KEY
NO THEN JUMP
TO LAST
INSTRUCTION IN
ROUTINE
GET VIDEO CHIP
REGISTER DEC
53265
SET BIT 4 set bit 4
to a 1
PUT IT BACK IN THE
REGISTER ie open upthe
screen
JUMP TO STANDARD
IRQ CODE BEFORE
RETURNING
5 REM BASIC PROGRAM 2
10 FOR A=0 TO 12: READ MC
:P0KE 4?152+fi,HC:NEXT
20 FOR A=0 TO 31: READ MC
:P0KE 49184+A,HC:NEn
30 SYS 49152
40 DATA 120,169.32,141,20,3,
169,192,141,21,3,88,96
50 DATA 165,197,201,4,208,11,
173,17.208,41.239
60 DATA 141,17,208,76,49,234,
201,5,208.8.173
70 DATA 17,208,9,16,141,17,
208,76,49,234
Assembly Listing
(Requires assembler
to enter)
10 M9152
20 IRQVEC=788
30IRQOUT=$EA31
32 LDA #0
33 STA 650
35 SEI
40 LDA #< JUMP
50 STA IRQVEC
60 LDA #>JUMP
70 STA IRQVEC+1
80 CLI
90 RTS
100 JUMP LDA 197
110 CMP #64
120 BEQ QUIT
122 CMP #4
124 BNE TEST2
126 LDY 53280
127 INY
128 CPY #16
130 BNE CONT1
132 LDY #0
134 CONT1 STY 53280
135 JSR DEBO
136 JSR TILOOP
138 JMP QUIT
140 TEST2 CMP #5
142 BNE TEST3
144 LDY 53281
146 INY
148 CPY W16
150 BNE CONT2
152 LDY #0
154 CONT2 STY 53281
155 JSR DEBO
156 JSR TILOOP
158 JMP QUIT
160 TEST3 CMP #6
161 BNE TEST4
162 LDA 650
163 EOR # 255
164 STA 650
166 JSR DEBO
168 JSR TILOOP
170 JMP QUIT
180 TEST4 CMP #3
182 BNE QUIT
184 LDY #255
START ADDRESS
HI BYTE INTERRUPT VECTOR
NORMAL IRQ VECTOR
SET NO KEY REPEAT
DISABLE INTERRUPTS
SET NEW IRQ VECTORS
ENABLE INTERRUPTS AGAIN
RETURN TO BASIC
READ LAST KEY PRESSED
IS IT NO KEY
NO KEY THEN RETURN
IS IT F1
NO THEN TEST FOR F2
YES THEN GET CURRENT
BORDER COLOUR
ADD 1 TO IT
RESET IF 15
STORE NEW VALUE IN
BORDER COLOUR ADDRESS
SET UP KEY DEBOUNCEGOTO
DO KEY DEBOUNCE
JUMP TO END
IS KEY F2
NO THEN TEST SEE IF IT IS F3
KEY
YES THEN GET CURRENT
SCREEN COLOUR
ADD 1 TO IT
RESET IF 15
STORE IT BACK IN SCREEN
COLOUR ADDRESS
SEE ABOVE
SEE ABOVE
JUMP TO END
IS IT F3
IF NOT THEN SEE IF KEY IS F4
GET CURRENT KEY REPEAT
STATUS
DO BINARY INVERT (IE 0 TO
255 OR 255 TO 0)
STORE IT BACK IN KEY REPEAT
ADDRESS
SEE ABOVE
SEE ABOVE
JUMP TO END
IS KEY PRESSED F4
NO THEN ALL FKEYS TRIED
JUMP TO END
SET UP MAX time FOR TIME
LOOP
CI G
185 STY 253
186 JSR TILOOP
GOTO TIME WASTE
SUBROUTINE
300 QUIT JUMP i
IRQOUTJUMP TO NORMAL IRQ
INTERRUPT SUBROUTINE
400 TILOOP LDY 253
TIME WASTING LOOP
410 LOOP1 LDX
#255
420 LOOP2 DEX
421 NOP
TIME WASTING NOP
OPCODES
422 NOP
THESE CODES DO NOTHING
423 NOP
BUT WASTE TIME. BECAUSE
424 NOP
WE ARE WORKING IN VERY
425 NOP
FAST MACHINE CODE WE
426 NOP
NEED THEM TO MAKE UP
427 NOP
A REALISTIC TIME DELAY.
428 NOP
429 NOP
430 BNE LOOP2
440 DEY
450 BNE LOOP1
460 RTS
RETURN FROM SUBROUTINE.
500 DEBO LDY #50
THIS SUBROUTINE SETS UP A
SHORTER TIME DELAY
510 STY 253
TO ENSURE THAT THE KEYS
DO NOT BOUNCE
540 RTS
RETURN FROM SUBROUTINE
PROGRAM:
10 1=49152
20 READ A: IF A> 256 THEN END
30 POKE I f AlI«Wl60Tfl 20
49152 DATA 169,0,141,138,2,
120,169,18
49160 DATA 141,20,3,169,192,
141,21,3
49168 DATA 88.96,165,197,201,
64.240,84
49176 DATA 201,4,208,22,172,
32,208,200
49184 DATA 192,16,208,2,160,
0,140,32
49192 DATA 20B, 32,131,192, 32,
111,192,76
49200 DATA 108,192,201,5,208,
22,172,33
49208 DATA 208,200,192,16,
208,2,160,0
49216 DATA 140,33,208,32,131,
192,32,111
49224 DATA 192,76,108,192,
201,6,208,17
49232 DATA 173,138,2,73,255,
141,138,2
49240 DATA 32,131,192,32,111,
192,76, 10B
49248 DATA 192,201,3,208,7,
160,255,132
49256 DATA 253,32,112,192,76,
49,234
49264 DATA 164,253,162,255,
202,234,234,234
49272 DATA 234,234,234,234,
234,234,208,244
49280 DATA 136,208,239,96,
160,50,132,253
49288 DATA 96,256
Please remember all of the
above programs, especially the
final one were not written with
either speed or memory usage
as their main criteria, but above
all they were to be simple and
concise making legibility
easier. There are always various
ways to solve most program-
ming problems and the ones
given were not necessarily the
best solutions.
All of the assembly listings
where produced on Supersoft's
Mtkro assembler cartridge on
the C64. Some assemblers may
use slightly different assembler
command codes. Conversion
to these assemblers should be
little or no problem due to the
fact that the assembly listings
are fully annotated. Of course
should you have the Mikro
cartridge you should have no
problems at all.
Assembler Listing
Loader Programs
As was mentioned earlier, if the
assembled versions of
programs in this article are
loaded using
LOAD "PROGRAM NAME" ,8,1
Then any attempt to load a
Basic program will fail and give
the Error OUT OF MEMORY.
The best way to overcome this
is by way of a small program
called a BOOT PROGRAM an
example of which is now given
below;
Tape Boot Program
10 IF A THEN 30
20 A=A+1:LOAD" INTERRUPT
program",1,1
30 SYS 49152:NEW (OR SEE
NOTE BELOW)
Disk Boot Program
10 IF A THEN 130
20 A=A+1:LOAD"INTERRUPT
PROGRAM",8,1
30 SYS 49152:NEW (OR SEE
NOTE BELOW)
PROGRAM: GEN BOOT
i rem mtttnmtmtimu
ttttttm
3 REM USPC3JL.K. GIBSON 1983
CSPCllJt
4 rem miuttmmumm
Mtttttu
10 POKE 53280, 1:P0KE 53281,1
:P0KE 646,6
15 IF Z2=l THEN SYS H1*L1
20 PRINT "[CLEAR]
ENTER FILENAME"
30 INPUT Zl$
31 PRINT: PRINT*SEARCHING FOR
LOAD ADDRESS OK!"
32 PRINT: PRINT-PROGRAM WILL
AUT0B0OT ON LOAD C0HPLET
E!"
34 OPEN 1,8,3,21$
36 GET#1,L1«
38 GETIl.HU
40 Y1I=H1$:GQSUB 200
:H1=X1I256
42 Y1$=LU:G0SUB 200:L1=X1
44 PRINT'tDO^VHl+Ll
: CLOSE 1
46 Z2=Z2+1:L0AD Zl$,8,l
50 SYS Hi*Ll
200 IF Y1$="THEN I1=0:RETURN
210 X1=ASC!Y1$)
220 RETURN
Note
Instead of NEW which will wipe
out the Basic Loader and leave
the Interrupt Code running, a
Basic program (your Basic
Program) could continue from
here of which the Interrupt
Program forms an integral part.
Any of the programs that
Load with 8,1 at the end (this
is called a Relocated Load) will
work using the above Boot
programs. Remember the
value for the SYS command
may have to be altered to
accommodate different code
entry points.
A Little Utility
The program listed below is
entirely in Basic and provides a
useful facility. Should you ever
come across a machine code
program, whether it's one you
have written yourself (and have
forgotten the SYS entry point)
or one written by somebody
else, then this is for you. It can
be LOADed using the 8,1 or the
1,1 suffix but how do you know
where it resides in memoryand
what value do you use with the
SYS command to activate it?
Worry not, this program
automatically Loads and Acti-
vates almost any machine code
Program. The only programs
will not activate are ones where
the code entry point is not at
the actual beginning of the
machine code Program.
Although it will still tell you
where the Program resides so
you can use a Monitor to find
that out for yourself. Try it out
on the programs contained in
this article, they will all work.
The utility is listed below and is
called General BOOTstrap.
The Program
We have now reached the end
of this article, hopefully with a
better understanding of how
our computer works parti-
cularly IRQ Interrupts.
If you have found this
article interesting or have any
problems and you own a
modem then please drop me a
line on:
COMPUNET:LKG82.
SYSTEL: 533848507.
YOU KNOW WHAT? IT'S BEEN A HELL OF
a month! I topped my high score on
Anticipital (shuddup! It's a good game,
actually!), finally found a good chess
game that doesn't bore the pants off me,
and not only that I've got a stack of
hints'n'tips that'll knock yer eyes off!
'Cip it and See
OK, here goes. Ancipital is not really a
new game, I admit that. But it's certainly
one of Jeffy Minter's best. I get a bit tired
of most of his other stuff; the early
out'n'out shooty ups are fine for a few
moments, but quickly pall in the end. The
experimental Mama Llama makes my
wrist hurt, and I find it more than a little
bit frustrating, having a Killdroid
careering all over the screen totally out of
conscious control. (P'raps you should use
the Force? — Ed.) Very funny!
Where was I? Oh, yes. Ancipital, or just
plain 'Cippy to afficionados, is a true
original. Four way gravity, a really off the
wall objective, and a good slant on Jeff's
alternative Universe. I like that. I think
games which have a background story are
more fun to play. You know, a little
something to read before you power up
the game, to get you into the feel of the
story. That's where Elite scored very
highly in my estimations, ana) that's in the
little sci-fi book you get with the package.
Come on, software houses! You're here
to entertain us, so how about it.
What's that? What's my hi-score on
'Cippy? Nah, I'm too modest. Nah!
Geddaway! Aw, alright, if you must know,
it was 368,805. Pretty good, huh?
Chess Mate
I must tell you about this. . . Look. I'm not
really known for being a chess player.
Well, actually, I'm rubbish, but I do keep
playing it, despite humiliating defeats to
man and machine alike. I dunno, it's akin
to the fatal fascination some folk have
with car crashes. The best chess game I 've
stumbled over recently, in my gluttony for
defeat is Colosuss Chess 2.0. It's so easy to
play; simply moving your pieces using the
cursor, rather than the old long winded
KP3-Kn4 kind of input you have to suffer
in others I could mention. It's a delightful
game, bringing back some of the peace
and quiet of the real game. It beats the
pants off me every time!
Hint Me Daddio!
(Eight to the Bar)
Here are a few tips for your notepad.
Stop me if you've heard any of them
before.
Jet Set Willy: This game drives me
bonkers! I thought I'd seen the last of this
on my monitor, but alas no; the game is
back with new rooms, new challenges,
and not a POKE in sight! Blast! I still can't
leave it alone though. Shin up the rope in
the Cold Store and you get into the Sewer
System (poo!). Go all the way up the back
stairs to Nomen Luni (Top Of Plane), skip
across to On The Roof, Up On The Battle-
ments and finally We Must Perform A
Quirkafleeg. (OK, Matthew Smith. I know
you read Furry Freak Brothers Comix!)
Climb up the rope and you'll find yourself
in the Watchtower. Get to the top, jump
up. and you'll find yourself in the Rocket
Room. Grab the gems at the top of the
Rocket, and off you go, you're in the
Space Station. Once on the Station, find
your way to the Transporter, and you'll
find yet another new system of rooms.
There's also a guest appearance of a room
from Manic Miner. ..good grief!
Rockfords Riot - Boulderdash II: On
the first screen you have to blast a hole
through a wall by dropping a rock on a
firefly. Then you must clear the earth
under a wall, and then drop rocks onto it.
The wall is Magic, and it will create a gem
for every rock that passes through it!
General tips: The amoebas will create
gems if they are contained by rocks. Try
snatching gems from the side 6f piles of
rocks and examine the way the rocks fall.
There's an interesting clue on how to get
seemingly enclosed gems out by utilising
creative snatching. (Sounds painful, but
never mind!)
More from Rockford next time.
Raves from the Fave File
My current favourite games are Ancipital
(Llamasoft), for reasons previously
specified: Bounty Bob Strikes Back (US
Gold) still my bestest platform game,
beating the pants off Willy, any day;
Summer Games II (Epyx/CBS) if only for
the fencing and the Kayaking; Rescue on
Fractalus (Lucasfilm/Activision) one of
the most state of the art arcade games in
existence, and if Jeff endorses it, then so
do I; Ball Blazer (Lucasfilm) probably the
most dizzying 3D game out, fast and
furious; Rupert and the Toymakers Party
(Quicksilva) Ahhhhh! I nit sweet? And
finally. Rock'n'Bolt (Activison), to my
mind, the only new game from these boys
worth a light.
That's Yer Lot!
OK, that's all in the Saga of Yellow Prindle
Walks a Long Way Off and Conquers His
Fear of Strange Fruit... we have time for
this month. Next time we'll... well
actually you'd better wait and see. cos I
always spill the beans, and what thanks do
I get? None. So off you go and write me a
letter about your high scores. Go on! And
don't turn to the next page until you've
done it!
Hurumph!
/ 1
.00.
Yes Its true !!!
For a limited period we are giving away a £5.00
Travel Chek for spending money on your next
holiday with EVERY £50 SPENT.
Thats not all folks !!!
your vouchers could also win you a FREE stay
HOLIDAY for two or four people in our lucky
numbers draw.
U. a. .
* Malt.
°0
Fan- f „ .
9.99
Computer Centres
48 Junction Road, Archway, London N19 5RD
01-263-9493/5
238 Muswell Hill Broadway, London N10 3SH
.01-883-3705
.OS**
INSTANT CREDIT
INSTANT CREDIT"
Terms
All products are guaranteed for one year unless otherwise stated. Payment may be made by Access, Barclaycard, Bankers draft, Building Society cheque,
cash or postal order. Sorry, cheques need f tve days for clearance. We reserve the nght to change prices without prior notice. All prices ere Inclusive of VAT
Please check before ordering for carriage charges
Stuart Cooke goes bonkers
about Gremlin Graphics
Bounder.
x
ma
511
*****
vou
K SI HIM
MIM
MO
EVERY ONCE IN A WHILE A GAME AR-
rives that you put in your disk drive, play
for live minutes, think it isn't very good and
put it away. Five minutes later you'll stick
it back in the cassette recorder and
suddenly find that it's three o'clock in the
morning and you've been playing the
game for hours. Well, Bounder is one of
those games.
Remember the game that you used to
play when you were kids (or maybe you
still do) where you can't step on any of the
lines around the flagstones or the monster
will gel you? Well. Bounder certainly
owes a little of its background to this.
You play the part of a bouncing tennis
ball travelling aecross a scrolling path.
Your way is hindered by a large number of
pitfalls. Perhaps the main problem that
you have to overcome is the fact that you
can only land on the paving stones. If you
miss then your tennis ball plummets to the
ground a long way below you. I'm not
quite sure why the path is floating above
ground, but you can't knock the pro-
grammer for a lack of artistic licence.
Large gaps in the paving can be
bounced across by means of the super
bouncers. These are paving stones which
have an arrow on them and give your ball
thai extra power it needs to bridge the
gap-
Large walls block your path so you
must guide your ball around them. In the
meantime men on hangliders and floating
logs are trying to stop your progress.
If (or when) you manage to reach the
end of a level you'll find the goal awaiting
your ball. If you enter this then you'll find
your score increasing.
After each level you'll find yourself
entering the bonus screen. This consists of
a number of paving stones with question
marks. Landing on a question mark
increases your score. Be warned you only
have a limited number of jumps in which
to increase your score. Extremely boring
but it certainly bumps up your points.
Scattered around each of the levels
you will find a number of mystery paving
stones. These bare the same mark as those
on the bonus level but will not always give
you more points. If you are lucky then you
will gain extra jumps for use on the bonus
level, extra points or extra balls. If
however you are unlucky you will find
your ball being chomped to death by a
mouth or even punctured by a flying dart.
The hazards become more severe the
further you get into the game. Missiles are
launched from the sea, man (ball?) traps
suddenly appear and burst your ball, a
plethora of flying beastiesget in your way,
even some of the paving stones disappear
from beneath you. In fact it seems that
everything is out to prevent you from
reaching the goal and bonus level.
A superb tune sets the atmosphere for
your travels along the pathway. The
graphics scroll excellently and your ball
spins as though it has just left a tennis star's
racquet.
As a bonus an extra game, Metabolis, is
being given away free with Bounder.
Metabolis is a conversion of an earlier
Spectrum game and offers very little
difference from the original.
You play the part of a little bird who is
flying around a vast number of locations
attempting to stay away from -the
numerous baddies. Your aim in life is to
collect a number of radioactive pieces
scattered around in some extremely
inconvenient places.
Mapping the locations for this game is
definitely a must as you will soon find
yourself lost.
Metabolis offers nothing out of the
ordinary and probably wouldn't do too
well as a stand alone game. However
being included in a package with
Bounder makes it an excellent purchase.
Bounder is definitely one of those 'Just
another Co' type of games and a must for
any serious Commodore 64 collection.
Especially when you remember that you
are getting another game thrown in for
the price of one.
OR... MADE BY ALIEN
THE FINAL CARTRIDGE
THE FIRST OUTSIDE OPERATING SYSTEM FOR THE CBM 64
This new operating system built in a cartridge does not use any
memory and is always there. Compatible with 98% of all programs.
Features:
. DISK TURBO - 6 limes taster disk
access - loadinq and saving
• TAPE TURBO 10 limes (aster, even
with files - normal Commodore com
mands compatible with standard
turbo's
• ADVANCED CENTRONICS INTER-
FACE compatible with all the well
known Centronics printers and Commo
dore printer programs Prints all the
Commodore graphics and control
codes (important lor listings)
Advanced screen-dump facilities.
Prints Low-Res. Hi-res and Multico-
lour Full page!!! Even from games and
paint-programs, like Doodle. Koala
Pad etc. Searches automatically for
the memory address of the piclure
• 24K EXTRA RAM FOR BASIC-PRO-
GRAMS AVAILABLE: Two new com
mands ..Memory read". ..Memory wri
te" They move 1 92 bytes with machi
nelanguage- speed anywhere in the
64K Ram of the CBM 64 Can be used
with strings and variables
■ BASIC 4.0 COMMANDS like Dload
Dsave. Dappend. Catalog, etc.
■ BASIC TOOLKIT with Auto. Renum
unci Goto and Gosub). Find, Help. Old.
etc
PREPROGRAMMED FUNCTION
KEYS: Run. Load. Save. Catalog.
Disk commands. List (removes all list
protections)
KEYBORD EXTRA'S - Allows you toi
delete part of a line: stop and conti-
nues listings, move cursor to lower
lefthand corner. Pokes and Syscalls in
He* Typ command operates your prin-
ter as a typewriter
COMFORTABLE EXTENDED ML.
MONITOR: with relocated load
scrolling up and down Bankswitching.
etc.
RESET SWITCH: resets to monitor;
resets with old, resets to Hi Res prin-
ting; resets every protected program
hope
SPECIAL
INTRODUCTORY
PRICE
FOR ONE VJfc FORI
c
PA FOR TWO <%■■
50.- c J7:
each
FOR THREE
OR MORE
each
ON OFF SWITCH
never need that one
we
you
1 2 Months repta
cement guarantee
1 4 Days money
hack guarantee
if you are
dissatisfied
t :t )M» m i I r nt>
U.K. ORDERS Barclays and Accescards~o7
Cheques should he made out to
H & P Computers. 'VCI 9 Hornbeamwalk
Witham Essex CM8 2 SZ England.
Telephone: 0376 511471.
copv"i|ii .iiid MMMl u<iili>m,Mli HhP con.pt ( )cn Wolph.i.'iUlxw hi 236
30H3 MV n.HlMrt-n. N.'Ilif?rl-n»l* IH 01031 '0731982 Mm M40t * Mtt ■)
Part two of Daryl
Bowers' machine code
arcade game.
IN THIS MONTH'S ARTICLE I
am introducing the multi-
purpose interrupt handling
routine and the end of the
routine 'INIT'. We havealso got
some smooth scrolling and
wrap-around! Can you bear
the anticipation?
If you look at the source
code listing you will see lhat
RESTORE1, RESTORE2 and
TABMOV need to be changed,
and lines 1540and 1550must be
replaced with blank remark
lines. Now on to heavy stuff!
The first 40 lines are an
addition to 'INIT'. The section
to set up interrupts is the one
with which we are mainly con-
cerned. First, we disable
interrupts with SEI. If we did
not, and an interrupt occurred
while we were changing the
interrupt vector, the C64 would
probably crash.
Locations $0314 and $0315
hold the two byte address of
the interrupt handling routine.
This normally points to $EA31 -
where the KERNAL takes care
of the keyboard input and
various other 'events'. We shall
replace this with the address of
our own routine - 'HANDLE'.
This is done in lines 3500 to
3530.
Next we enable Raster
Interrupts - in other words,
when the raster in the monitor
reaches a certain point down
the screen an interrupt will
occur - lines 3540 to 3560.
Locations $D011 and $D012
hold the 'raster compare
value*. If we place a value in
these locations it is stored by
the Vic chip. When the raster
reaches that number of lines
down the screen the Vic chip
will cause an interrupt. $D012
contains the low byte and bit
zero of $D011 contains the high
bits of this value. We set up the
value of the first interrupt
position in lines 3570 - 3610 to
$00FF.
Having changed all this we
can now enable interrupts
again - 'CLI' - and finally we
shall turn off the keyboard -
lines 3630-3650. We do this be-
cause the depression of a key
causes an interrupt when we
don't want one - try removing
330 RESTORE 1
.BYTE 2
340 restore:
.BYTE 4
B70 STflTl
.BYTE ' METERS
: 00000 LIVES : 3
880 STAT2
.BYTE ' SCORE
: 00000 FOOD : 9?
1540
•
.duo
Akin Ml aa< 11(f)
AND tZOOllllIl
1550
•
tain
STA »077o,T
DEY
3470
;SET UP INTERRUPTS
API i Ann i n
BPL LOOP 18
34B0
1
7 01 ft
ATA
RTS
3490
SEI
jo jy
■
3500
LDA IHANDLE1255
Sow
I
3510
STA 10314
7R7A
tlD/V
1
i
3520
LDA IHANDLE/256
3880
iTUTCPBIIPT MAKini T
. In 1 tKKUr i nnnuLino
3530
STA $0315
3890
i
3540
LDA SD01A
3900 HANDLE
3550
0RA HI
3910
LDA IDOlT
3560 •
STA SD01A
3920
aun it
3570
LDA IDOU
3930
DMC (5ACTCP
35B0
AND 1127
3940
wnr »lmj i
STA IDOU
3950 RASTER
3600
LDA MFF
3960
STA $D019
3610
STA $0012
3970
LDA $D012
3620
CLI
3980
CUP RAST2
3630
LDA $DC0E
3990
BCC POSITION!
3640
- AND MFE
4000
CUP RAST2+1
3650
STA IDC0E
4010
BCC P0SITIQN2
3660
■
4020
CUP RAST2+2
3670
!sET SCREEN SIZE
4030
BCC POSITIONS
3680
i
4040
CHP RAST2+3
3690
LDA ID016
4050
BCC POSIT I0N4
3700
AND 1255-8
4060
CHP RAST2+4
3710
STA $0016
4070
BCC P0SITI0N5
3720
>
4080
J HP P0SITI0N6
3730
Sprint status
4090
i
3740
i
4100
3750
LDY 139
4110 POSITION!
LDX 10
3760 L00P18
LDA STATl.Y
4120
JHP ANYP0S
3770
and noon mi
4130
3780
STA $0748, Y
4140 P0SITI0N2
LDX 11
3790
LDA STAT2,Y
Games Programming
4150
1160
4170 P0SITIDN3
4180
4190
4200 P0SITIQN4
4210
4220
4230 POSITIONS
4240
4250
4260 POSITION*
4270
4280 ANYPQS
4290
4300
4310
4320
4330
4340
4350
4360
4370
4380
4390
4400
4410
4420
4430
4440
4450 JUMP
4460
4470 FININT
4480
4490
4500
4510
4520
4530
4540 SCROLL 1
4550 RAST2
4560 BQRD1
LDX t3
JHP ANYPOS
LDX 14
JMP ANYPOS
i
LDX 15
LDA $0016
AND 1248
ORA SCR0LL1,X
STA ID016
LDA RAST2,X
STA $D012
LDA B0RD1, X
STA ID020
LDA backi.x
STA $0021
TXA
ASL A
TAX
LDA TftBHOV, X
STA JUNP*1
LDA TfiBHOV+1, X
STA JUHP+2
JSR IFFFF
■
PLA
TAY
PLA
TAX
PLA
RTI
4570 BACK1
.BYTE 3,3,$0D t *0C,2,3
4580
•
I
4590
4600 HQVE1
RTS
4610
4620 M0VE2
DEC SCROLL1+1
4630
DEC SCR0LL1+2
4640
LDX SCR0LL1+1
4650
BPL 0K2
4660
LDX #7
4670
STX SCR0LL1+1
4680
STX SCR0LL1+2
4690
LDY 11
4700 L00P1O
4710
LOA *05E0,Y
4720
STA $05DF,Y
4730
INY
4740
CPY MAI
4750
BNE L00P10
4760
JSR PRBLDNG
4770 0K2
RTS
47B0
I
4790 H0VE4
DEC SCR0LLH3
4800
DEC SCR0LL1+3
4810
LDX SCROLL 1*3
4820
BPL 0K4
4830
LDX 17
4B40
STX SCR0LL1+3
4850
LDY il
4860 L00P7
LDA »06D0,Y
.BYTE
.BYTE
.BYTE
0,0,0,0,
131,167,
0,0,0,0.
0,0
182,211,251,91
2,0
these lines and see what
happens!
Lines 3690 to 3710 reduce
the number of columns of
characters on the screen to 38,
by blanking out the first and
last. This means that characters
will smoothly scroll off the
edges of the screen; again, try
omitting them and watch the
left hand side.
The end of this routine
simply places the data in lines
870 and 880 on to the screen.
Note the 'AND' statements.
These are used because the
assembler converts alpha-
numerics in BYTE statements
into their ASCII values. The C64
screen, however, uses values 64
less than the ASCII equivalent.
These 'AND's, therefore,
remove bits seven and six from
the values - the equivalent of '-
64'.
Handling Interrupts
The routine 'HANDLE', is
designed to be totally portable,
that is, you can use it in any
program. Five tables are used:
4540 SCROLL! : this contains
the X smooth scroll value.
4550 RAST2 : the Y positions
where raster interrupts occur.
4560 BORD1 : the border
colour.
4570 BACK1: the background
colour.
1430 TABMOV : the address of
the scroll routine.
I have allowed six interrupt
positions - you can add more
or use less - and it is easily
possible to add more tables
defining further effects; Y
smooth scroll for instance.
Now we know that if any
interrupt occurs the processor
will complete what it is doing
and jump to 'HANDLE'. The
first thing we must decide is
whether the interrupt has been
caused by our raster compare
value or by some other source.
This is done in lines 3910 to
3950. When a raster interrupt
occurs, bit zero of $D019 is set
to one. If this is not set we jump
to SEA 31 - the normal KERNAL
routine. A 1 must be written
back into $D019 to clear the
register, ready for the next
interrupt (a rather strange way
to do it if you ask me!) in line
3960.
The next dozen lines check
the value in SD012 (the current
raster position) against our
table of values, and branches to
Games Programming
4870
STfl $06CF,Y
5090
LDY 11
4880
LDA tDADO, Y
z:oo
LDX 1064
4890
STft $0fiCF,Y
51 :o LOOP?
4900
I NY
m 4 ■ V
-DA 1064. Y
4910
CPY M28
5!30
STA I063.Y
4920
BNE L00P7
5140
:ny
4930
JSR ROADFILL
5150
CPY 1121
4940 QK4
RTS
5160
BNE LOOP?
4950
i
5170
LDY 1104+39
4960 NQVE5
JSR NVFROG
51B0
STY 1104*7?
4970
JSR PRFR06
5190
LDY 1064+39
49B0
RTS
5200
STY 1064+79
4990
i
J
5210
STX 1064+39
5000 HQVE6
DEC CLCDUNT
5220 0K6
5010
BNE 0K6
5230
RTS
5020
LDfl CLSPEED
5240
•
•
5030
STA CLCDUNT
5250 PR9LDNG
PTE
5040
DEC SCROLL 1+5
5260 ROADFILL
LDA I06DC
5050
LUX 5CR0LL1+S
5270
CTfl IflflfUJ ?7
Q 1 n IV6JV '41
5060
BPL 0K6
5280
RTS
5070
LDX 17
5290 FINISH
5080
STX SCR0LL1+5
5300
.END
the appropriate 'POSITION'.
At this point the value of X is set
up ready to index into the
tables.
The routine ANYPOS is
used for all positions, and sets
up the X smooth scroll, next
interrupt position, background
and border colours and the
address of the movement
routine. The effect of this is to
allow 'bands' of characters on
the screen to scroll at different
speeds, in different directions
and with different colours. No
mean feat!
'FININT' simply restores the
registers to their correct values
and returns from the interrupt.
The Scroll Routines
Essentially, all the scroll
routines from line 4620 to 5240
are the same, so I will concen-
trate on just one of them;
'MOVE4*.
The 'band' in area four (the
road) will be moving from right
to left at a rate of two pixels
every interrupt (60th of a
second). This is achieved in
lines 4790 to 4800. If it were to
move right we would
INCrement the value in
SCROLLH3'.
Next we check to see if we
have scrolled a whole character
- lines 4810 and 4820. If the
value has reached minus one
we replace it with seven (lines
4830 and 4840) and procede to
scroll the characters eight
pixels (one character) to the
left - lines 4850 to 4920.
'ROADFILL' is the routine
which fills in the right-most
character, in this case with the
character which "falls' off the
left.
It will be seen that
•MVFROC and 'PRFROG' have
now been moved to the
interrupt routine. This is to
ensure that there is no flicker
when the sprites are moved,
since they are printed when the
raster is below them.
There's More
When typing in the listing,
change the symbols '&' and '/'
to '< ' and '>' for example:
LDA tt HANDLE & 255 becomes
LDA # < HANDLE
This is because my
assembler insists on being
awkward when it does a listing!
'START' should now be at
location $2335 (9013)
'FINISH' should now be at
location $2526 (9670)
Next month we shall
introduce the frog movement
routines, and a joystick reading
routine.
^^^^^^
BINDERS
FOR YOUR VALUABLE
COLLECTION OF
YOUR COMMODORE * £5 20 %
MAGAZINES \ }
"SMART EASY TO USE SEZ?
"TOP QUALITY
To ASP Rudtra Service, PO Box 35. Wolaey
House. Wolsey Road, Hemel Hempstead,
Herta HP2 4SS (0442-41221)
Plaaia luppif ..four Commotion Blnd*r% CS.20 Inc. P*P
Total I (PWim m»«B chwu« payable lo ASP ltd)
Vmti RaquMad - 196 . . 1M . , It*. . .1M. .
PIMM alio. 21 day* lortWhwy
If an advertisement
is wrong were here
to put it right.
If you see an advertisement in the press, in print,
on posters or in the cinema which you find
unacceptable, wnte to us at the address below.
/
The Advertising Standards Authority.
ASA Ltd. Dept 3 Brook HoUM, Tomngton Place London WC1E7HN
Syntron's Digidrum is foot-
tapping, hand-clapping good
THE HEART OF A GOOD BAND IS THE
ability of ihe rhylhm seclion to mark lime
with the accuracy of a metronome and it is
not surprising that microchip technology
has developed the rhythm generator as
the ultimate musical timepiece. The
problem is that, unless you are willing to
pay a small fortune, the current
generation of machines has as much soul
as the ticking of a clock. But this appears
to be changing.
Syntron's Digidrum is a flexible
drumkit synthesiser which allows for
those little touches of individuality which-
normally differentiate the human from
the machine. There is sufficient
programming flexibility to allow changes
in rhythm and variation in style and to
convince the average listener that he is
listening to a syndrum kit played by a
human.
The Digidrum package consists of a set
of disks, containing (he composer
software and instrument databases, and a
cartridge which plugs into the user port of
the C64. The cartridge has a standard jack
output for connection to an external
amplifier and a trigger output which can
be used to keep several slave sequenced
synthesisers in time to the beat.
On loading the software, you already
have a standard drum kit of seven
instruments: base drum, snaredrum,
three torn toms (large, small and floor), a
crash cymbal and a hihat. These give a
range of eight sounds in all because the
hihat cymals are classed as two separate
instruments whether open or closed. The
sample programs give an opportunity to
hear how the drumkit sounds and very
impressive it is too, despite the slightly
electronic sound.
The composer program is in two
sections. The first part allows you to
compose short drum patterns and the
second permits you to combine these
patterns into complete backing tracks.
There is no facility for printing out either
the patterns or the songs so I found the
best method was to switch from one
section to the next and assemble the song
from each pattern whilst the sound was
fresh in my mind.
The pattern composer will permit 51
different patterns with a length of 38
beats. This is an arbitrary figure because
the tempo can be changed over 64 steps
which gives a range from the very, very
slow to the impossibly fast. The instruc-
tions suggest that the mean value is
around 44. The screen display looks like a
familiar musical stave but there are eight
lines instead of the normal five, each with
a letter corresponding to one of the
instruments.
Tunes are entered by moving the
arrow cursor along a tessalated vernier
scale at the bottom of the screen until the
correct position is reached. Then the
letter key corresponding to the chosen
instrument is pressed. The result is that a
symbol appears on the relevant line and
the instrument sound is heard. Aftera few
notes have been entered, you can listen to
the pattern simply by pressing a function
key.
The number of instruments which can
be sounded at the same beat position is
limited to three. A drummer only has two
hands so the program makes it impossible
for a snaredrum, torn torn and cymbal to
be sounded at the same time but a
snaredrum, cymbal and bass drum can.
The flexibility of this system means that a
respectable and plausible drum solo can
be created using triols, syncopation or any
other device or basic rhythm which takes
your fancy.
Each pattern does not have to be a full
38 beats long it can be foreshortened by
placing an end bar at any position along its
length.
Once a few patterns have been
created they can be combined into a song
using the second program. This is
extremely simple to understand. The
screen shows several columns which are
tabulated in rows from one to 100. This is
the maximum number of steps which a
song can have but since each step can
consist of the same pattern repeated 100
times it doesn't take an Einstein to work
out thai there is room enough for even
the most ambitious project.
Entry of a song is made by selecting the
pattern number and the number of
repeals which are then displayed on ihe
song screen. The tune can then be played
in full or part to see how it sounds and if
necessary a patlern can be called up and
trimmed until the fusion is complete.
As in a word processor, there are
several keys which allow the selection of
blocks of the song which can be copied,
deleted or inserted. Similarly patterns can
be copied from one pattern position to
another so that small changes can be
made to create a new variation to add
interest to the generated rhythm.
There is room for 10 songs which use
the same bank of patterns and these can
be saved todisk for recall when necessary.
In addition to the basic drum kit there
is the option to replace any or all of the
instruments with new ones which range
from the hi-tech syndrum sounds to the
more unusual percussion instruments
such as a metal bar or even a very realistic
hand clap. The limitation is still eight
sounds and only three to a beat.
In the studio it would be ideal for
making demo tapes and the only
complaint I have is the length of time
taken to create the patterns. I did find this
stage quite enjoyable, however, giving
plenty of freedom to experiment. For live
performance, Digidrum would only be
practical if all the music used the same
percussion set or the performance was
organised to allow time for loading.
Although there are limitations to live
performances, I am quite sure that it
won't be long before the strains of Sid
Syntron's scintillating syncopation are
heard in the local pub.
'J >] >'■■
THERE ARE ALREADY DOZENS OF
music packages available for the C64, all
with their various strengths and
weaknesses. Anyone who launches yet
another package must think they have
something pretty special.
Even if your ears turn blue at the mere
mention of a BBC computer, you may well
have heard about Island Logic's The
Music System which was hailed by music-
minded users as the best thing since
memory expansion boards. The develop
ment team, System Software, has now
produced a version of The Music System
for the C64 and 128 and distribution has
switched lo Firebird.
As you might expect, the superiority of
the SID chip immediately gives any
Commodore music program a
tremendous advantage over a simiar one
on the Beeb. Not content with this.
System Software has included a MIDI
module which allows access to external
synthesisers.
The Music System (or TMS as it is
usually referred to) was highly regarded
not only for its music features but also for
its use of icons and pull-down menus. The
Commodore version can only enhance
System's programming and design
reputation as its use of these features are
not only superbly implemented but they
also make its operation relatively simple.
And with six modules to choose from and
over a hundred functions available from"
the keyboard, it needs to be simple. Most
keys perform the same functions in each
module so it's nowhere as near so
daunting a task as it may at first appear. A
handy Quick Key Guide helps
enormously and you'll find after a little
use that the keys fall under your fingers
quite naturally.
Right! Let's take a look at the modules.
These are the Editor, Keyboard,
Synthesiser, MIDI, Printer and Linker
whose icons are displayed on the main
menu screen. Each module has a
Command Line running across the top of
the screen from which the pull-down
windows. . .er. . .pull down. There are four
menus here: Files, Values, Commands
and Info and each is selected by pressing
one of the function keys. The information
given in the Command Line menusdiffers
from module to module but is similar in
type.
Files controls the loading, saving,
renaming and deletion of files and only
those relevant to the module you are in
can be accessed from that module. Values
holds such information as key signature,
tempo, octave, volume and voice
number. Commands is generally
concerned with instructions which affect
the whole or large portions of the piece
such as delete track and clear all tracks. It
is also home for a set of macro commands
such as settting markers, copying sections
to the notepad (more of that in a
moment), adjusting barlines, swapping
and copying envelopes and filters, etc.
Info displays general information about
the state of your composition, for
example note storage space and the
names of current music and sound files.
Moving on to specific modules, the
one you are likely to use the most is the
Editor. This displays a treble and bass clef
in what is referred to as the Voice Monitor
(VMW). Notes are entered here. The
VMW only shows one voice at a time but
you can flip from one to another at the
press of a key and the bars are always
aligned.
Notes are moved up and down the
staves to select pitch and the note name
and octave is displayed in a small box on
the top right of the screen. Each note can
be assigned a different volume level and
any one of 15 envelopes. The current bar
number is shown and horizontal bars
called barmeters indicate how much has
been recorded on each voice. You can
scroll through the score with ease and
notes can be inserted and deleted at any
point. A full range of accidentals can be
used including double sharps and flats for
the musical intelligentsia and notes can be
turned into triplets and tied although no
more than two notes can be tied together
at once.
The program will insert bar lines
automatically if required and you can
insert first and second time bars. Another
feature of TMS is the ability to define loop
sections. When played as part of a tune, a
loop section will keep repeating until the
whole tune has finished. Each voice can
contain up to 20 different loop sections so
you can quickly select one of a number of
repeating bass or rhythm patterns to
improvise over or for use in a tune.
If all these features have your mouth
watering and fingers itching it's only fair
to warn you that we're only up to page 25
of the manual. There is lots more to come.
From the Commands menu you can
call up a set of macro commands. These
operate upon a section of a voice which
has previously been marked with ""two
markers. Macro commands include trans-
position and envelope and volume
assignment.
Yet another feature is the Notepad.
This is used to store a section of a voice
which can be moved to another part of
the same voice or a different one. It can
also be used to merge two music files
together and notepad files can be saved
and loaded like any other although only
one can be held in memory a( a time.
If you prefer to tap out tunes on the
Commodore's keys, enter the Keyboard
module. Real-time note entry from
QWERTY keys is not the easiest way of
writing a tune but the Keyboard module
Music Review
B □ □ P
□ □ a a
Iter UP
Cop* »n»*l«P»
copy
Zmro enwPloP*
j e i-i m
helps lo make a difficult job as easy as it
can be. Three voices are entered
monophonically with horizontal bar-
meters to show you how much room is
available for each voice and the VMW can
be called to display the notes. The
Keyboard is entered in practice mode, or
Tinkle as it is called in the manual. Music
and Sound files can be loaded although
only music files can be saved from here.
The manual is kind enough to explain that
anything but simple tunes may produce
untidy compositions - and it's right - but
then the Editor module includes a Block
Tidy command to help put right the mess
you make.
The Synthesiser module is where you
come to grips with SID. It must be the
most complete and sophisticated SID chip
editor yet devised. Graphic displays give a
visual indication of SID's parameters and
you can load and play a music file to hear
the effect of the envelope as you alter it
on a proper tune. The envelope includes
waveform and filter selection and you can
name each creation for easy reference.
The Synthesiser includes extra
facilities like sweeping the pulse width,
pitch and filter without using another
voice - an extra bit of magic.
The MIDI module will be attractive to
a lot of users but let us not forget that a
MIDI interface is also required. The
program supports the SIEL (£79) and the
Passport (£110) interlaces and although it
may work with others this is not
guaranteed. Although the concept of
MIDI was to produce a standard set of
digital information signals, the standards
haven't yet filtered down to MIDI inter-
face manufacturers.
This module is basically a six-track
polyphonic real-time sequencer. It
records most performance information
but not pitch-bend which cuts off any
following data. I wonder how thisgot past
the debugging team. You can set the
tempo, select and delete individual tracks
and pause recording by pressing the
space bar. There are no channel assign-
ment or editing facilities but it is a rather
excellent extra and TMS is not, after all. a
dedicated MIDI program. Abigplusisthe
ability to convert MIDI files to music files
playable by SID and vice versa.
Regrettable' but rather obviously, any
mutli-part polyphonic pieces are con-
verted into three monophonic lines.
Performance data goes but voice
numbers in the range one to 15 are
converted to envelope numbers. You can
use the MIDI module for real-time input
and tidy up the parts later in the Editor.
The Printer module supports Epsom
and Commodore printers and you can
add lyrics to the score, too, providing a
convenient copy of your masterpiece.
Finally, the Linker module is used to
link individual music files. It is the only
way tempo, key and time signature
changes can be implemented in a single
piece and, of course, it allows mammoth
compositions to play through in total. Up
to 26 files can be loaded, memory
permitting, and arranged to play back in a
sequence which can contain up to 99
items. The whole arrangement can then
be saved as one file for convenient
reloading and playing although you can't
play this back through the MIDI module.
The 94 page manual is well-produced,
well-written, easy to read, full of
illustrations and a comprehensive index
will lead you to virtually every occurrence
of every aspect of TMS. Umpteen demo
tunes are supplied on the disk with even
more on the other side (a bit naughty,
these reversible disks, aren't they?).
You may have guessed by now, but if
you haven't, here it is: TMS is the ultimate
Commodore music editor for the SID
chip. The MIDI module is a bonus
although musicians with serious MIDI
requirements will need a dedicated
software package. TMS is easy to use in
spite of its wealth of features and it's fun. If
you are at all interested in making music
with your Commodore, I can not
recommend it too highly.
The Advanced version of TMS
containing all the modules described
above retails for £39.95 and is available
only on disk. A smaller version containing
only the Editor, Keyboard and Synthesiser
modules sells for £17.95 on disk and £14.95
on cassette. What will System produce for
the Amiga?
The Music System is available from:
Firebird Software, Wellington House,
Upper St Martin's Lane, London, WC2H
9DL.
ACTION REPLAY 1 S*
Yak's Progress
Llamatoll £11.50 disk £9.45 cassette C64 * Joystick
10 J_ 8 fi~ 8 i_ 10
Mcxr zone ea km
tlraiiiifvilfcfit
JEFF MINTER HAS BEEN games is available under the
around since Vic was just a lad title of Yak's progress.
and now a collection of Minter As a document of one man's
The Last V8
Mastertronic Mad Series £2.99 C64
"V8 RETURN TO BASE as you try to get home before a
immediately" crackles the delayed attack nucleur
voice in your headset and warhead wipes you off the face
you're off in a race against time of the earth.
Blackwyche
Ultimate £9.95 C64 ♦ Joystick
[■III 111111111 lllllllll lilt
WA ■■■■ , iliuiii Iiiimiii , ■■>
sJm lam (■■■■■■■i 1
fight to tame a machine, this
compendium is fascinating and
allows the newer C64 owners to
catch up on some of the best
and most unusual zapping
games to be devised for the
machine.
Eight games for the price of
one is an offer that few will
refuse and for many it will
provide the chance to get
turbo versions of games al-
ready in their collections as
well as filling up any gaps.
Attack of the Mutant
Camels and Revenge are both
here alongside Matrix, Laser
Zone. Sheep in Space, Meta-
galactic Llamas, Ancipital and
Hover Bower.
MUCH HAS ALREADY BEEN
said about the C64 answer to
the Marie Celeste, the bad ship
Blackwyche. In my opinion a
lot of this was pure hype. It isan
adventure style game and has
little to commend it over many
similar offerings.
There are enough camels to
give you the hump, sheep to
drive you baa-rmy and llamas
to drive you bananas. The
graphics vary as Minter's pro-
gramming skills develop and
the accompanying booklet
gives the lowdown on the
workings of the programmer's
fevered brain.
To try to describe the games
would probably take most of
the review space in this issue
because the games are unlike
anything to be seen elsewhere.
Imaginative and demanding,
they are not everyone's cup of
tea but the Minter following is
by no means a minority
movement. E.D.
. 6 -L 8 S'-
m
As a scientist working on
project V8, you were hidden
deep underground at the time
of the holocaust. You have now
been allowed to try and make
contact with the survivors.
The screen is divided into
two windows. The bottom
depicts your instrument panel
whilst the top gives a birds-eye
view of you and your
surroundings. The dials you
have to watch are fairly simple -
they include speed, distance to
base and time before the
explosion. You will, however,
have to keep your eyes firmly
on the road.
Providing you stay on the
road, all well and good but you
soon discover that you cannot
take corners at 410kph. One
crash and that's it - game over.
If you slow down to take
corners, there is no time for
you to return to base before
the bomb detonates. Event-
ually, I realised that some of the
trees I kept hitting could, with
slightly better driving, be
avoided
Strangely, the speech adds
little to the game's atmosphere
but the rest is extremely
addictive. The car is very
responsive and the music is
great. You don't have to be a
racing fan to enjoy this one.
C.H.
. 6 J_ 7 5" 7 1 7
Starting on the upper decks
you are immediately harried by
winged demons and the
occasional flying octopus!
Unarmed and helpless, your
first task is to examine the
cabins to find a sword guarded
by two nasty skeletons.
Attacking from both sides, they
beat you with bony fingers,
knocking down your energy
level as they do so. You must
find dubloons to replete your
power.
Once you have the sword
you can attack the flying
menaces outside but it is
ineffective against most of the
ghouls in the other cabins.
Occasionally you will get a
surprise as you enter a cabin,
the floor gives way and you end
up dazed on a lower deck.
Ladders lead up and in this way
you can tour the whole ship
making discoveries but no
friends.
The locations are numerous
but the graphics are very
repetitive. Only colours differ-
entiate which deck you are on.
There is some suitably nautical
music over the opening screen
but during play there are only
the sound effects which are
fairly unimaginative.
E.D.
» ACTION REPLAY ^ 1^4
Dynamite Dan 5 f 7 fi* 7 i 6
Mirrorsofl £7.95 CM ^ 9 B - „
ARRIVING BY ZEPPELIN AT
!he hideou! of Doctor Blitzen is
not the subtlest approach
Dynamite Dan could have
made. With the assistance of his
henchwoman, Donna, the
doctor has set into operation a
multitude of defence systems
and it is up to nimble-footed
Dan to avoid these obstacles,
steal the plans for the super
psychron mega-ray which
Donna and Blitzen have
secreted in the safe, and make
his escape.
This is a new platform game
from Mirrorsofl and it is
fiendishly difficult. As you
guide Dan around the house
looking for the eight sticks of
dynamite needed to blow the
safe, all manner of creatures
have to be avoided while
keeping an eye on your energy
level. Food is found at regular
intervals which will boost both
Dan's energy and your score
depending on the type of food
found.
There are other objects
which score points but the
most valuable are the lesi
tubes. The score for this
discovery is a miserable 25
points but they do give Dan an
extra life which is absolutely
essential for success.
At the bottom of the house
is a river and Dan displays what
is quaintly referred to as
'negative buoyancy' - he can't
swim. This is the most
dangerous of all the game's
elements because one dip in
the water and all Dan's lives are
lost.
The game will challenge any
platform fanatic with a
yearning for explosive fun.
E.D.
Hero of the Golden Talisman
Mastertronic Mad Range £2.99 CM
MISSING MY FIRST JUMP IN
Golden Talisman, I was more
than a trifle surprised to find
myself floundering under
have realised that a fair propor-
tion of this arcade adventure is
of a subaquatic nature.
In order to find the five
pieces of the talisman, you
must manipulate candles, keys,
ropes and spells as you make
your way through the various
tunnels. Assorted monsters
including particularly vicious
fire breathing dragons are
intent on stopping you. You
can carry up to five items at
once, the lefihand box
showing the one currently in
use. Also shown on the screen
water being chased by a shoal is a stylised map of where you
of ferocious looking piranha, have been, indicators of your
As usual, I had not read the strength remaining, oxygen
instructions, otherwise I would carried and a large map of
immediate surroundings. Your
strength and oxygen supplies
can be increased by collecting
fruit and bags of air that appear
periodically.
Movement is straight-
forward, the only tricky bits
being the jumps which involve
the diagonals on the joystick.
There is no scrolling between
ihem so you are never sure
what you will find on the next
one. The graphics are large and
blocky with some of the
movement being jerky.
This game has some original
ideas but they don't quite get
together and the overall
impression is uninspiring.
G.H.
Fighting Warrior
Melbourne House £9.95 cassette £14.95 disk C64
L s 5"
6 c 5
LIVES: 2
AS PRINCESSES EVERYWHERE
are wont to do, yours has
managed to go and get herself
kidnapped and you set off to
rescue her. The setting is
ancient Egypt and in order to
achieve your quest, you have to
battle against assorted
creatures such as humans with
jackal heads and winged
demons.
Both you and your
opponent try to hack each
other to bits with swords. The
amount of damage you can
sustain is depicted by a number
of arrows at the bottom of the
screen and a successful strike
reduces this total by one. When
it reaches zero, your adversary
dies or you lose one of your five
lives.
Combat itself gives you a
choice of three aggressive and
four defensive manoeuvres.
You can aim a high, medium or
low blow and can jump, duck
and move forwards and
backwards. In practice, the
battles tend to degenerate into
a slogging match with both
sides standing still and trading
blows. After the combat, you
get the chance to take a swipe
at the magic vase that appears.
This may increase or decrease
your strength, take you to
another zone or force a battle
with a god.
Fighting Warrior lacks any
lasting appeal. Every battle is
much the same as the last and
there is only a limited range of
movements available.
There are better combat
games on the market. G.H.
'ACTION REP LA Y JL JL S - db
^T^*^^ I^^HV 1 * 1 *~ ' Or.q.n*l.lv Ptayabilily G.«ph.c-> Value f ot
Mon«v
Journey
CRl £8.95 CM * Joystick
* 5 I s B^ 3 ^L 3
KEEP YOUR HANDS FREE AND
hold on to the sides of the
vertical shafts as you climb
down otherwise you could
come to a disastrous end.
The adventurer must collect
11 treasures from the centre of
the earth and bring them to the
Thunder birds
Firebird - Super Silver Range £3.95
V
00 0+ -40
1 ^^^^^^^^^y I . . .... ^
A TEAM OF ARCHAEOLOGISTS
have got themselves trapped in
an Egyptian tomb. They send
out a mayday distress signal
Quest for the Holy Grail
Mastertronic £1.99 CM
which is picked up by Inter-
national Rescue. Thunderbirds
are go.
You control both Thunder-
"MONTY PYTHON WITH
chips" reads the inlay. This
supposedly wacky adventure
game should be served with
large dollops of green slime.
Bearing a striking resemblance
to Scott Adams' original adven-
ture games of yesteryear, this
surface. Dragons, magnetic
fields, dynamite, detonators
etc. hinder your search for the
treasures. The player can
escape from the vampires by
climbing up or down a shaft.
There are guns which can be
used to kill deadly vampire bats
and oxygen pills which can be
taken when you enter a gas
chamber. To pick something
up you must stand over it and
push up on the joystick. If you
get too heavy you can drop
something by pushing down
on the joystick.
This is yet another arcade
strategy game of the
Dungeons and Dragons ilk. The
special effects show you
somersaulting to your death
and those used in the trans-
porters are original and good.
There are two speed levels, fast
and normal. The documenta-
tion is adequate and full
playing instructions can be
found on the back of the cover.
The player has three lives and
starts each time at the surface.
There are different levels of
skill the first one being that of a
brainless snail.
At first I was continually
having to start over again after
somersaulting to my death. I
found the trick is to hold on to
the sides as you climb down. I
recommend this challenging
game to anyone who wants a
few hours of fun.
IX
0s
9 & B
birds 1 and 2 (the fire button
toggles control between them)
and you have to find your way
through a maze of passageways
inside the tomb. As in all the
best tombs though, it contains
a huge number of traps. These
come in two forms - huge
stones that block the passage-
ways and guardians such as
mummies and spiders that try
to stop you.
The main problem is the
blocks. These are of three
types. TBI can only move blue
blocks. TB2 green blocks and
both can shift yellow blocks.
The maze has been very
ingeniously designed and it
requires considerable planning
to get through. Frequently, you
think you have solved a
problem only to find that one
of your craft is blocked in. To
get to the correct position to
shift certain blocks, one of the
TBs is quite likely to have to
detour through three or four
other chambers first.
TB2 can carry certain equip-
ment and a menu lets you
choose what to lake. These
items may help you in a later
stage of the game but you have
to find out how and where.
Extra fuel is a must.
Thunderbirds, although not
graphically brilliant, is an excel-
lent game which is guaranteed
to keep your grey cells ticking
over. FAB Virgil.
C.R.H.
1 Jjfc*±*
game tries to improve on them
by using graphics, but not to
any success.
Sir Tappin is on a quest to
find the Holy Grail. The game
starts off in a Forge where the
player meets a CND nut with a
nuclear powered lamp and a
key. He is able to go west, east,
north, south, up or down.
When Sir Tappin has been
squashed by a falling tree or
drowned by flying snot or has
befallen some other tragedy he
restarts his quest in the forge
again.
This value for money game
offers the enthusiast on a tight
budget many hours of
exasperating fun and a large
vocabulary of four letter words.
The writers have left all clues,
instructions and commands of
how to play to the players
imagination or previous
experience. Using 'Help' yields
"Yes. you'll need it", "No, I'm
sulking" or just plain "No!".
There are a few original results
for some commands - try 'quit'
for instance or use 'drop' and
suffer the consequences once
you are carrying the nucleur
powered lamp! I found the
language rude andpuerile, and
do not recommend it to any-
one who wantsachallenging
and exciting game to play. J.L
. ACTION P ^ P L A Y 5 i E I)
JI^^^J M 1 * 1 ' *— 0rt 9 tnaltt V Pl-yabihlv Graphic* ValuaFo*
SkoolD-ze ^ 9 | 8 | 7L
Microsphere £6.95 C64
CONVERSIONS FROM SPEC-
trum to C64 often disappoint
me bul the plot of Skool Daze is
so good that even the jerky
scrolling action does not
detract from the enjoyment.
It tells a tale with which
everyone is familiar, the panic
just before the school reports
arc issued. And it is a matter of
Willow Pattern
Firebird £3.95
>!
5 I
am
life and death to steal your
report before the Headmaster
sees it.
The hero is called Eric, a
good name for a hero if ever I
heard one, and he must obtain
the secret combination of the
schoolmasters' safe if he is to
save his reputation. If the boy's
name does not appeal to you,
the names of the main
characters can be changed at
the start of play.
Like all schoolboys, Eric has
lessons to attend and if he is
caught wandering about
during lesson time, or messing
about generally, he will be
given lines by passing teachers.
If he is clever he will make sure
that someone else is closer to
the teacher when misbehaving
because the blame generally
falls on the nearest boy. If Eric
amasses more than 10,000 lines
he is immediately expelled and
the game starts again.
To find the combination,
Eric must jump up and hit all of
the shields which are hanging
on the walls around the school.
Some of the shields are too
high for a mere schoolboy to
reach so violent measures are
called for in desperate circum-
stances. This may involve
knocking down a fellow pupil
or a schoolmaster and using
them to give the necessary
height to reach the shield.
When all of the shields have
been set in motion, Eric must
knock down each teacher in
turn to reveal a single letter of
the combination. Unfortu-
nately, the dithering old
History teacher can only
remember his if he sees his own
date of birth written on the
blackboard. Clues are given to
the date during the game but if
you guess wrong the nasty little
swot of the class will split on
you for writing on the board.
Once Eric knows the com-
bination he must rearrange the
letters into the correct order,
he only knows that the
headmaster's come first. The
guess is written on a clean
blackboard and then he must
rush to the staffroom, jump up
in front of the safe but if it
doesn't open he must go and
guess again.
Recovery of the report does
not end the game because the
shields must be hit again to stop
them flashing. Skillful use of a
catapult can always help with
hitting the shields but this does
run the danger of getting lines.
The screen is a hive of ac-
tivity but it's a pity that more
was not made of the 64's capa-
bilities. A touch of blatant
sexism creeps in with all of the
characters being male but in
the tradition of Tom Brown's
Schooldays and Billy Bunter I
shall overlook this and not put
Microsphere in detention.
The old saw about these
being the happiest days of your
life is laid bare by this, the most
traumatic, game of your life.
E.D.
6 §7
MOST PEOPLE WILL AT SOME design on them. The design
stage have eaten a meal off represents an ancient Chinese
plates with the willow pattern fairy tale and Firebird's latest you can entice a guard to throw
game is an arcade adventure
based on that story.
You play a mere clerk who is
in love with a princess. The
trouble is, she is promised to a
merchant so you decide to
break into her palace and
rescue her. To do that, you
must find your way through a
nwe, find certain objects,
overcome the palace guards
and then escape to a boat.
In order to defeat a guard,
you must throw a sword at him
before he throws one at you.
You can only carry one sword
at a time and so you will have to
backtrack a lot. Extra swords
can be found lying about or
one and then dodge out of the
way.
Occasionally, you have to
cross a bridge which you do by
leaping from stepping stone to
stone. It's not quite that easy as
three giants try their hardest to
knock you over and so timing
your leaps becomes crucial.
The graphics in Willow
Pattern are exquisite with
pictures of Chinese temples,
bridges and trees. My first
impression on playing it was
that it was a Sabre Wulf look-a-
like but the way that the game
plays makes it totally different.
At £3.95 it is excellent value for
money.
G.R.H.
ACTION R e p l a y0 X E ±
^ Mon«y
Space Hunter
Mastertronic £1.99 C64 * Joystick
6 /*\5
UIFH_
run:
. mm
THE RED ALERT FLASHES AND
you prepare to defend yourself
agains! the waves of fighters
that threaten to destroy vou
As a last desperate attempt to
save the Earth you, a Rookie
pilot, have been sent to capture
the food transporters before
the aliens.
The position of the target
ship, which can be changed by
the player, is indicated by a
flashing dot on the radar. Use
the warp drive or forward
thrust to speed you to the
target ship, as loitering brings
hordes of horrible fighters.
Once close enough, an
approach speed of one or two
will automatically teleport you
The inhabitants of Earth are into the ship. Now with the aid
starving and none of the space of a jet pack you can start your
fleet pilots have returned from search for extra 'warp drives',
their mission in search of food, flashing food units, more fuel
,— SIMlltl—
[eeeie-1 1 j 1 —
Chimera
Firebird - Super Silver Range £3.95
and shields. Beware of the
ricochetting creatures which
will deplete your energy and
kill you if you collide with
them. Once you have collected
all you can, exit and find the
next target ship.
For a cheap game styled on
Elite this is not at all bad. To
progress through the 11 ranks
from Rookie to Space Hunter
will not take an experienced
Elite-ist too long. The docu-
mentation, as in many Master-
tronic games is not very
comprehensive. The graphics
are realistic and the music is
pleasantly relaxing after your
ordeal with the fighters.
J-L
7 r%\7
Y
THAT THE CRAFT ORBITING
the earth is hostile is unde-
niable. It also appears that
someone is going to have to
Friday the 13th
Domark £8.95 C64 + Joystick
find out how much of a threat it
represents and if possible
destroy it. if you escape with
your life, so much the betterl
SCORE : 0000000 UEAPDN :
*M It M I
211 fill?
FRIDAY THE 13TH IS BASED
on the scythe-fi movie of the
same name. It is a tale of twisted
revenge as homicidal maniac
hi
Jason tries ' to avenge
mother's murder.
His wrath is turned against
the innocent holiday makers
As the airlock shuts behind
you, you look around and see
that you are in a large chamber
with exits left and right and an
exit in front of you blocked by
what appears to be a giant
microchip. The rooms are
depicted in 3D block graphics,
reminiscent of Ultimate's Alien
8 and Knightlore for the
Spectrum. The effect works
well.
Destruction of the ship
requires a four stage sequence
and your only clue is that the
first stage requires a spanner so
it seems reasonable to set off
looking for one. There is
nothing much to stop you as
you explore - nothing to shoot
- but certain areas are re-
stricted to you at the start and
kill you if you try to enter them.
Time however is against you
and your supplies of food and
water soon disappear and have
to be replenished as you find
them.
You die if either level
reaches zero. Objects are fre-
quently hidden behind corners
'that you can't see' and so de-
tailed exploration is essential. A
scrolling message keeps you
informed of what's going on.
Chimera is an enjoyable
arcade adventure but it lacks
the sophistication of some of its
bigger brothers.
C.R.H.
#7
6 /«\ 7
on the shores of Crystal Lake
and the field of action covers 30
screens with blood. In addition
there are three buildings: a
church and a barn (four screens
each (plus a bungalow (12
screens). This gives Jason
plenty of room to cleave.
The computer selects a
character for you to play and it
is your duty to look after the
other players by herding them
all into a room where you have
placed a sanctuary cross.
At some point you may have
to arm yourself with one of the
weapons lying around and
tackle Jason in combat. If you
succeed in killing him don't
feel too secure, just when you
think you have seen the last of
him, up he pops again feeling
pretty cut-up about his last
encounter.
The game is quite challeng-
ing to play and the graphics are
blocky but pleasant, I don't
really think that the quality of
the game will really have as
much sway with sales as the
horrific subject matter. The
playing instructions give hints
on how to get the most from
the horrifying screaming sound
effects.
A gory story for the blood-
thirsty buyer and just to
quench that thirst you get two
foaming blood capsules with
the game. E.D.
■ v ACTION PEP LA V — 2' ^
^%«Jr 1^1^ ■ ■ Ongioalily Payability Graph, c* Value Tor
Enigmaforce
Beyond Software £9.95 C64 * Joystick
N m I'm f^m
£t2 fl
Oops *y
THE E-TEAM ARE BACK WHEN
Enigmaforce try to overcome
the deadly General Zoff. This is
the expected sequel to
Shadowfire and the gameplay
is even more advanced than
before.
Having captured Zoff in the
previous game, four members
of the Force were accompany-
ing Zoff to his trial when their
ship crashed on team member
Syylk's home planet after
collison with a gravity mine.
The game starts as the Enigma-
force members regain
consciousness and discover
that Zoff has made off.
Syylk's insectoid people
have enough to worry about
with an attack from reptiloide
so the team has to enlist the
help of the insectoid com-
mander. This involves the team
in much frantic searching and
the game allows you to
disperse your force as you see
fit. Each member can be
located and relocated when-
ever necessary and the activity
selection panel on the lower
half of the split screen is used to
issue commands.
Enigmaforce consists of
Zark Montor the team leader,
Syylk the strong warrior,
Sevrina Maris the markswoman
and locksmith, and last but not
teast Maul the combat Droid.
As the team goes from
location to location they can
pick up objects which are lying
there but care has to be taken
to ensure that each player's
special skills are catered for.
When the commander has
been located, the reptiloid
zone must be searched for the
only serviceable spacecraft on
the planet. Zoff is also search-
ing and must be stopped and
captured before Republican
destructor tugs arrive to blast
the planet to smithereens.
The activity panel is fairly
complex and it takes a little
time to familiarise yourself with
it. At the top is a picture of each
team member and if the cross-
wire selector is placed over one
of these panels and the fire
button pressed then you are
immediately shown that team
member's current location.
You can now use the arrow
icons to dictate a direction for
that character to take or select a
sequence of actions for them (o
perform. At first it is relatively
simple to use the panel but as
the game progresses and the
action hots up, you have to
keep your wits about you and
your joystick on the move.
Action commands are like
an icon driven version of an
adventure command. For
example, to get Maul to pick up
explosives you first select
Maul's icon panel. Then check
the inventory of objects
around to see that the
explosives icon is there and
place the crosswire over the
pickup icon. If the button is
pressed when the crosswire has
been moved over the
explosives icon, it will move
across into the panel showing
the list of objects carried by
Maui.
As you can guess the game
and the graphics are very
sophisticated and put many
similar multiscreen games to
shame. It just shows what can
be done with the 64 in the
hands of an intelligent pro-
grammer. Smooth animation of
each character's movement
adds cartoon realism to the
game and the excitement of
the many skirmishes should
hold your attention for hours.
E.D.
The Human Race
Mastertronic £1.99
This is achieved by completing
each screen after which the ape
slowly develops its manly
features.
The game begins in prehis-
toric times complete with a
large stegasauras, dragonfly,
pterodactyl and lots of
bananas. Your task is to get the
ape to the largest banana whilst
avoiding contact with the
roaming dinosaurs. The route
to the banana appears very
straight-forward but it requires
some thought if you are to
reach it. Once completed
THE HUMAN RACE TOOK game. The idea is quite simple- chapter two begins.
350,000.000 to develop years you have to develop a rather Here the ape is sent forward
and believe me it will take you ugly and stupid ape into a man, to the age of lava and fireballs,
as many hours to complete this remer
moving pathway without
falling off or getting hit by a
hurling fireball. This screen
belongs in something like
'journey To The Centre Of The
Earth'l
As the game continues the
tasks become very difficult but
still enjoyable and certainly
provide a good challenge.
The graphics aren't the best
I've seen and there is a rather
annoying delay every time a life
is lost but generally the game
provides excellent value for
money.
Go ahead and buy it and
watch out for a lovely loincloth
that would be worthy of any
You don't have to be mad to
Company Profile
work here, but it helps. Marie
Curry visited Ian Stewart at
THERE'S A LITTLE GREEN MAN ALIVE AND
well and living in Sheffield. This pea-
coloured gremlin has made his home
there since June 1984 and the climate
seems to agree with him.
Gremlin Graphics is a small compact
outfit run by the exuberant Ian Stewart
who defines himself as the inspiration
behind many of his company's products.
Entering the micro industry through
Laskys' first computer outlet in Sheffield,
he soon realised that there were
opportunities for a bright young man in
this youthful business.
Inspired with this confidence, Ian
opened Sheffield's first specialist
computer shop aptly named. Just Micro.
The venture took off and Just Micro did
just fine. It was less than a year later that
the gremlin got into the works.
In the summer of 1984, Ian and
partner, Kevin Norburn, took the plunge,
caught the gremlin and stuck him on
some headed notepaper to form Gremlin
Graphics. Once this was done there was
no going back and Wanted: Monty Mole,
Gremlin's first game, was launched amid a
blaze of publicity. The miners' strike was
then entering the long and not so hot
summer and the Gremlin Graphics boys
saw the potential of Arthur Scargill's
activities as material for a computer game
storyline. Because of its topical content
the game was treated to wide coverage on.
both national television and radio and
became a chart success paving the way for
two subsequent Monty games.
Ian Stewart believes that a major
reason for Gremlin Graphics's continued
success in the production of popular
games is the connection which is closely
maintained with Just Micro. All Gremlin's
games are extensively tested on
unsuspecting members of the public who
innocently venture into the shop.
"Customers are excellent bug fighters."
commented Ian. "Our programmers may
test a game for days without finding
anything, then one of the kids will come
across a bug in a few minutes of play."
The Gremlin outfit listens very
carefully to the comments of the
customers who try out new products. Ian
crisply summed up the Gremlin policy in
this area: "If we don't get the reaction we
want then we scuttle it!" Simple but
effective.
Many Gremlin game ideas are built up
around a comical central character and
this seems to have become a successful
technique. Names such as Potty Pigeon,
Sam Stoat Safebreaker and Thing on a
GRILLING
Spring come to mind. "We like to base a
game around a particular character to
stimulate the imagination of the player,"
said Ian. "We tend to concentrate on
arcade games because they give an outlet
to the sense of humour which is a ruling
principle at Gremlin. Wherever I am, I'm
always thinking of new ideas for games."
There are only four full time
programmers at Gremlin, other work is
done by about 10 regular freelancers. Pete
Harrap who wrote the original Monty
Mole is now a permanent member of
staff. His association with Ian Stewart
began when his Spectrum broke down
and Just Micro lent him another until it
was repaired. Ian said: "Pete was a
customer in the shop and we realised he
had great programming ability. We lent
him the Spectrum and it just went on from
there." However, Sheffield natives with
defunct computers shouldn't rush round
to try and get a loan of a machine.
The full lime programmers at Gremlin
are now collaborating to produce a series
of games based on the popular role-
playing books: The Way of the Tiger. The
books revolve around the adventures of
Avenger, a Ninja warrior. Work on the
series is progressing fast and the first part
should be available in February. Although
programmers at Gremlin have always
worked together to a certain extent this is
the first project into which the team have
ploughed their joint efforts from its
inception and the co-operation between
them has been extremely successful.
Praising his boys, Ian said: "Areas which
need improvement can be sorted out
through collaboration. There's never a
cross word between them." There will be
four games in the series when it is
I i(ini<-u miu — " -
similar story line to the books.
Another new game. Bounder, features
the incredible antics of a bouncing tennis
ball. It's certainly a different concept for a
game as the ball leaps toward you out of
the screen and then bounces back into
the distance. Gremlin's programmers
have even put spin on it! According to Ian
the game comes in a value for money pack
with another game, entitled Metabolis,
on the back of the cassette.
C-16 and Plus/4 games are an
important part of the Gremlin range and
owners will be pleased to know that
Gremlin has no intention of discontinuing
this commitment to these machines.
There are probably around 80,000 C-16
and Plus/4 owners in the country now and
there are very few software houses which
take notice of them. Looking at the
situation in the cold light of day Ian
remarked: "The less people that produce
games for the C-16 and Plus/4, the better
for Gremlin." A recently released
compilation contains four games for £9 95
so the much neglected users can really get
zapping.
Ian obviously believes hes got his
policy right but he stresses the fact that
above all the computer industry is a lot of
fun. "The main strength of Gremlin is the
atmosphere in the firm. This makes for a
good working situation and consequently
good products." he remarked almost
drowned out by the zapping noises from
next door and the blare of electronic
music from a neighbouring office.
When asked to sum up Gremlin as a
software house, Ian makes the place
sound more like a lunatic asylum.
"Basically we're a barmy lot up here."
Yet another bundle of replies
to your letters.
Problems, Problems
I WAS DELIGHTED WHEN THE PROGRAM
System 64 by J A Wolfe appeared in the
August issue of the magazine. I was able to
enier all the addresses of my associates
and it worked well. That is to say until this
week!
I wanted to amend the address of a
colleague who had moved house. So,
using option 2 'Delete Record'. I
cancelled the old address and re-entered
the new address on the end of the list of
addresses.
Imagine my disappointment when I
printed out a fresh list of addresses to find
that every single address after the one I"
had deleted now had the wrong name. It
appears that the deletion in your program
only erases the name and not the whole
address. I have studied the program listing
but have been unable to amend it. Can
you help?
D W Passmore, Sidmouth
I have typed in the Home Accounts
program from your magazine. However I
cannot seem to get it to work.
I have checked my program against
the one printed in the magazine and can't
find any errors. I haven't seen any
corrections printed for this program but I
believe that the error is yours and not
mine.
Why don't you check your programs
before you print them in the magazine as
it would no doubt solve many problems?
A Sherwood, Bridlington
Every post delivered to the Your
Commodore office is guaranteed to have
quite a large number of letters similar to
the ones above. So it is probably worth
making a few points clear
Every program that we publish in the
magazine is very thoroughly tested before
we print it.
The listings in the magazine are not
typeset in any way. What we actually do is
get a printout of the program which is
then placed on the page as artwork. This
leaves very little chance for errors to
occur.
Obviously errors do creep in
sometimes. When they do we always
publish corrections in the magazine.
Corrections don't usually appear in the
next issue of Your Commodore but in one
after that. This is because when one issue
is on sale another is just about ready to be
printed.
Most of the time the errors are made
by the person typing the listing into the
machine. No matter how many times you
check them little errors do slip through. In
order to help you with this we will offer to
send a new computer listing to anyone
having problems with a program if they
send us a stamped self-addressed
envelope and state clearly what they
require.
In the near future we are hoping to
start a software service where all of the
programs in a particular issue will be
available on cassette but we have no firm
date for this as yet.
In the meantime a couple of features
that will try to give you some hints about
de-bugging programs have been com-
missioned. And. being honest, fault
finding a program is an extremely good
way of learning about programming.
Perhaps we should start a spot the de-
liberate mistake page!
Coing back to the System 64 program.
It appears that the programmer made a
few mistakes when he wrote the program.
He only deletes the name and not the
address. This is done in the Sort routine.
This is the type of mistake that it is not
a/ways possible to spot so please make
sure that you give any programs sent to
the magazine a thorough testing before
you stick them in the post. Anyway here
are the lines that will need to be added to
delete a whole record.
3562 LET L2$(L)=L2$(T):LET L2$0>"*"
3563 LET L3$(L)=L3$(T) : LET L3$<T>="*"
3564 LET L4$(L)=L4$(T):LET L4$(T>="*"
3565 LET L5$(L)=L5$(T>:LET L5$(T)='""
3566 LET L6$U)=L6$(T):LET L6$(T)="-"
Too Many Ads?
I am writing to complain about the recent
change which has occurred since the
merging of Your Commodore and Your
64. It has come to my attention that there
has been a substantial increase in the
amount of advertisements, at least 25% in
the December issue. As I subscribe to
your magazine I am worried that the
amount of advertisements may increase
even further in the future.
I would also like to see in the magazine
an extra page of Flippo (In Arcadia) in
exchange for one less page of Sense of
Adventure, as I feel that Flippo is far more
interesting.
A suggestion I have for your monthly
competition is, perhaps, that you should
ask people to send in the best one line
program or the best game or utility using
no more than 100 linnes since a spot the
difference competition does not involve
the use of a computer in any way.
I hope that the points I have brought
to your attention will help to make your
magazine even more absorbing.
Raymond Webb, Guestling
Thanks for your comments, Raymond. It's
always interesting to find out what people
think of the magazine. Your main worry
seems to be concerning advertising. This
varies greatly throughout the year and
tends to rise at Christmas because manu-
facturers want to make the most of the
extra money we all spend. Advertising
forms a large part of our income and it is
therefore essential that we carry a certain
amount in order to keep up the standard
of the magazine as a whole.
As an arcade game fan, we can bring
you some good news. In the near future
we will be taking some more ideas from
Your 64 to improve our arcade coverage.
However, adventure players needn't
worry because, you won't suffer from this
at all.
As for your comment on our
competitions. Raymond. We do try and
run the occasional different one, but the
beauty of a spot the difference compet-
ition is that anyone can enter, and they
needn't have any knowledge of
programming to do so. Since the prizes
are usually games of some sort, then it
seems illogical to set a problem which
only programmers can answer.
David Janda takes control and
guides you through
Commodore's Pilot package.
THIS MONTH'S LANGUAGE LAB IS
rather different from those in previous
issues. Presented here is a brief intro-
duction to a language that is very popular
in the educational field in America. No,
it's not Logo, but Pilot, and in my opinion,
it would be just as popular if ir was given
the amount of attention it deserves. Com-
modore Pilot is the only package which is
being reviewed, and the surprising thing
is that the Commodore version of
standard Pilot (known as common Pilot)
includes many facilities not found in the
standard.
It is worth pointing out that although
the language is designed to be used by
educators to write interactive educational
programs, it does have its attractions for
the programmer. The reason I say this is
because of pattern matching.
It can be said that the job of a pro-
grammer is to solve the problem at hand.
In educational programs this can be quite
difficult as there is a lot of user input
which has to be interrogated. This is not so
easy, and programmers normally find
themselves spending a lot of time writing
routines that interrogate user input. This
can distract them from the job at hand -
i.e. solving the problem!
Pilot incorporates a number of tools
that facilitate the interrogation of user
input, thus leaving the programmer to get
on with the main task. These tools can be
applied to problems associated with string
manipulation and pattern matching.
Pilot — The Language
Pilot is a computer assisted instructional
(CAI) language, which is designed for
teachers to produce educational
programs - courseware as the manual
terms it. The idea behind Pilot is that it
should be easy for teachers to produce
programs that interact with the student on
a question and answer level.
The version which is supplied on disk
will run Common Pilot programs, and do
a lot more since extensions have been
added. These allow for the use of colour,
graphics and sprites. An example is that
text windows may be set up to allow for
questions and answers to be displayed on
different sections of the screen.
Graphics are catered for with
commands to allow lines to be drawn/
plotted as well as filled in with colour. A
group of sprite and colour commands is
also included, and the extensions
facilitate the use of the advanced features
of the C64.
The syntax of Pilot is very simple. Pilot
instructions consist of several parts. First,
there is a one-letter opcode (of which
there are 20. The opcode is then option-
ally followed bya modifier which changes
the way the opcode is going to be execu-
ted. Conditions can then follow and they
can determine whether the instruction is
to be carried out. This is best described
with an example;
TS(A=5): Correct, the answer is 5.
Here the opcode T means print
something, but the screen is first cleared
with the modifier S. The condition is that
the answer A equals five, and if so the text
in the field (everything following the
colon) will be printed.
Unlike Basic. Pilot does not require
strings to be enclosed in quotes. Instead,
the string variable or literal is placed after
the separator. This very simple Pilot
program demonstrates this:
T: This will be printed
This will simply display "This will be
printed" at the current cursor location.
However, a return is also printed after
each occurrence of the T command. It is
possible to 'hold', or keep the cursor on
the same line by using the H modifier.
TH: What is your name
This will display the message, and any
answer will be entered on the same line (it
is important to leave two spaces after the
message).
Pilot Data Types
Maths in Pilot is integer only which isa bit
of a restriction. The range is between -
32768 and +32767. Another restriction is
that only 26 variables are allowed for.
Performing calculations is done with
the computer instruction which takes the
form of C. Variables assignment is
performed after the separator and
printing the values of variables requires a
£ character to precede the variable name.
C:A=2+2 — assigns A with 4
C:B=(2+2) # (3+1) — assigns B with 16
T:Here is a sum. . .
TH:2+2=
C:A=2+2
T:£A
T:There, the answer is £A
Programming
Strings are handled in a very flexible
way. But, as mentioned Pilot only has 26
variables available so it is not possible to
have a string and a numeric variable of the
same letter.
Before a variable can be used as a
string, it must first be dimensioned with its
maximum length. Pilot allows a maximum
string length of 255, and the command
used to dimension string is D. The $
character is used to identify thai the
variable is a string, but this is not
absolutely necessary.
D:A$O0)
The computer command is used to
assign a string variable with a value. In this
case, it is necessary to use quotes. When
using the T command to print the
contents of a string variable a $ character
is used to precede the variable.
D:A$(14)
C:A$="Your Commodore"
T:This magazine is called $A$
The C command is very flexible when
it comes to string assignment. Strings can
be assigned with sub-strings, concati-
nated and so on. Indexing is allowed
which can be used on the source or object
string.
D:A$(18)
D:B$(20)
C:A$="Thisis funny"
C:B$="He is not very funny"
C:A$<9,3)=B$(11,4)
T:$A$
Would print: "This is very funny".
Concatination is also possible using
the !! operator.
D:A$(6)
D:B$(7)
D:C$(13)
C:A$="Hello"
C:B$="readers"
C:C$=A$t!BS
T:SC$
Would print: "Hello readers".
Getting user input into the micro is
very simple in Pilot. A pre-defined input
buffer called %B is used to store user
input. It works like this:
T:Hello, who are you?
A:
T: Pleased to meet you $%B
Notice that like ordinary string variables,
the input buffer requires the $ to be
prefixed to the buffer name when it is
being printed.
The A is the accept command, and it
can work with numeric and string
variables as well as the input buffer
variable:
D:A$(10)
TS:What is your name?
A:$A$
T:And how old are you $A$ ?
A:£B
T:You are £B years old then $A$
The problem with user input is that you
don't always get it in the format you
wanted. Some people would enter their
names in upper case, some lower, and
some as a mixture of both. This can be a
real headache especially if the input is to
be processed. Pilot provides a problem
command PR that allows input to be
'converted' into a specified choice. PR:U
will convert all input to upper case, PR:L
to lower and PR:S will strip any input of
spaces. PR:/* will reset the options.
The Clever Stuff
Pattern matching is achieved with the
match command M. Assuming we wanted
to check that the user reads this mag, we
could pose the question and process the
answer using this program:
T:What Commodore magazine do you
read?
M:Your Commodore
A:
Now, if the answer entered was "I read a
magazine called Your Commodore which
I think is great", believe it or not a match
would be made. This is because Pilot does
the hard work involved in searching
(called window searching) though the
users input checking to see if there is a
match.
Problems with this are that the user
may enter the answer in upper or lower
case. To still get a match the PR command
would be used before the match
command to convert the input.
Match used with the S modifier will
even accept answers that are spelt
incorrectly! The S modifier will accept
an answer even if one tetter is wrong, or if
a pair of characters have been reversed -
very handy!
More flexibility is allowed with the •
and & characters when used in the match
command:
M:Comm*dore
This simply means 'accept any letter in
place of the •'. The & means any number
of characters.
Summary
There are many, many other features to
the Pilot language. Jumping, subroutines.
multiple choice tests, even hinting is
possible. All these features make Pilot a
very practical tool for educational
programming.
The language does suffer in some
areas though. The restriction on the
number and length of variables is a
serious one, as is the lack of floating point
maths. But these faults are common to the
Pilot standard, and are not unique to
Commodore's implementation.
Even though the language is very
powerful, it is not very hard to learn.
Commodore Pilot has 20 commands with
modifiers and because the syntax is very
simple, it is quite possioble to write
complex programs in a very short time.
I would strongly recommend Pilot to
anyone who wishes to write programs that
involve processing interactive answers.
The features available in the language
enable the programmer to 'get on with
the job'.
Commodore Pilot
Commodore Pilot is supplied on disk
only, together with a very good 111 page
tutorial/instruction manual. Two versions
of the Pilot interpreter are supplied on
the distribution disk; a development
version which is used to write, edit and
run Pilot programs, and a run only version
that is identical except programs can only
be loaded and run.
Other files on the disk include three
demonstration programs, a simple sprite
editor (written in Pilot), and a Pilot
program that enables the user to experi-
ment with sounds on the C64
The actual Pilot package has four
modes of operation. First there is the edit
mode which is used for program creation
and editing. The run mode is for running
the program, and the command mode is
used for loading, saving and printing
programs. Finally, the immediate mode
(which is similar to Basic's immediate
mode) allows the programmer to
experiment with Pilot by trying out Pilot
commands one at a time. This mode is
very handy when learning the language.
Graphics on a 320*200 grid are catered
for. Points can be plotted and removed,
lines drawn and the graphics origin
changed. Both text and graphics can be
freely mixed and a split-screen command
allows the screen to be divided between
graphics/text output and prompts/user
input.
Other features include sound, sprites
and user definable characters, although I
must say that these could have been
implemented in a more friendly way.
Commodore Pilot not only conforms
to the standard common Pilot, but also
includes many new features (some of
which I have mentioned). The package is
an easy one to use which is a blessing.
Highly recommended!
PROGRAMMER
OF THE
YEAR
£s commodore
This month's entry is
Spike, an excellent
game by Shane
Stevens.
A LARGE NUMBER OF GAMES
have been entered for the
Programmer of the Year Com-
petition. Spike is certainly an
above average entry. It is
definitely worth the effort of
typing it in.
In the game you find your-
self as Spike travelling around a
Power Grid. Hidden some-
where within the grid is your
trusty C64. Your job is to find it.
Of course, life isn't easy and
the Sparks brothers are out to
get you. The number of sparks
charging around the grid
depends on the level at which
you choose to play, there are
nine in all.
Full playing instructions are
included in the game so there is
no point giving them here.
Getting It All In
Spike is in two parts. The first
pan is in Basic and should be
typed in and saved on to tape
or disk. Make sure you read the
page that tells you all about our
method of printing listings
before you start (I don't want
(HOME) - Ed).
If you are using a cassette
then make sure that you
change the
LOAD "SPIKE",8,1
In line 40 to:
LOAD "SPIKE".1,1
Once you have SAVEd the
Basic you can then tackle the
machine code. Yes, I know that
there's a lot of it but we have
tried to make it as easy as
possible for you.
Elsewhere in this magazine
you will find the Your
Commodore Easy Entry
program. You should type this
in and save on something safe.
You will need this for most of
the machine code programs in
Your Commodore. RUN this
and follow the instructions
with the Easy Entry article.
Don't forget each line is
checked as you type it in and
you can SAVE what you have
entered at any time.
Make sure you SAVE it
before you attempt to RUN it.
Spike should be SAVED
straight after the SPIKE
LOADER and is SAVEd
between the following
locations:
Start Address
End Address :
32768
37296
Remember to press F1 in
the Easy Entry program to
activate the SAVE routine, and
make sure you save the
program with the name SPIKE.
And On We Go
Now that you have both parts
stored on tape you simply have
to LOAD and RUN the SPIKE
LOADER program. This will
automatically LOAD the
second part and the game will
start to RUN.
Have fun!
Program: Spike Load
1 REM SPIKE BY SHANE STEVENS
85"
2 IF fl=l THEN GOTO 20
4 A=A+1 : LOAD "SPIKE", 8, 1
:REH CHANGE TO ,1,1 FOR
CASSETTE
20 S=54272:F0R L=S TO S+24
:READ DA: POKE L,DA:NEXT
30 DATA 96,22,0,1.0,35,166,
195,16,0,1,0,35,166,48,4,
0,9,0,35,166,0,15,244,31
40 FOR AD=49160 TO 49202
:READ DA: POKE AD, DA: NEXT
50 DATA 120,173,224,3,174,
225,3,172,226,3,141,4,212,
142,11,212,140,18,212,88,
96
60 DATA 206,224.2.206,225,3,
206.226,3.32,8,192,238,
224,3,23B,225. 3,238,226,3,
96
70 POKE 992.67:P0KE 993.65
:P0KE 994,33
90 POKE S+18.33:F0R T=l TO 1
30:NEXT:PQKE S+18,32
:P0KE S*14,1B0
: POKE S*1B,33
95 FOR T=l TO 130:NEXT
100 POKE S*18.32:P0KE S+22,1
:P0KE S»14,251
:P0KE SM8,33:F0P T=15 TO
150:P0KE S*22,T:NEXT
110 POKE S+18,32:P0KE S*22.90
:P0KE S+14,71:P0KE SMS. 5
:P0KE S*1B.33:FQR T»J TO
130:NEXT
120 POKE S+1B,32:P0KE S+14,
152:P0KE S*1B.33
:F0R T=l TO 140:NEXT
:P0KE S*1B,32
130 POKE S*14,237:SYS 49160
:F0R T=l TO !B0:NEXT
:P0KE S+3,B:P0KE S+10,8
140 FOR T=i TO 1B0:NEXT
:SYS 491B1:F0R T=l TO 170
:NEXT:P0KE S+3, 1
:P0KE S*10.1
150 SYS 49160:F0R T=l TO 80
:NEXT: SVS 49181
:F0R T=I TO 170:NEXT
:P0KE S*3,8;P0KE S*10,B
160 SYS 49160:F0R T=l TO 80
:NEXT:SYS 49181
:F0R T=l TO 170:NEXT
:P0KE S*3,1:P0KE S*10.1
170 SYS 49160:FDR T=0 TO 170
:NEIT:P0KE S+3,8
:PQKE S+10,8:P0KE S+14. 71
:PQKE S+15.6
:90 FOR T=l TO 100:NEXT
:SYS 49181:F0R T=l TO 270
:NEXT:P0KE 992,17
;P0KE 993,17
185 A=50:B=37:C=31
: POKE S+6. 249: POKE S+13,
249:P0KE S+20,249
:P0KE 994,17
'.90 POKE S.60:P0KE S*1,A
:PQKE S+7,162:P0KE S*B,B
:P0KE S+14,165:P0KE S+15.C
200 SYS 49160:FOR T=l TO 200
:NEIT:SYS 49181
:F0R T=l TO 21:A=A-l:B=B-i
:C=C-1:P0KE S+1,A
210 POKE S+B,B:P0KE S*15,C
:P0KE S*14,48:P0KE S+15,4
:P0KE S+20,242
215 POKE S,119:P0KE 8*1,7
:P0KE S*7,25l:P0KE S+B.4
:P0KE S*6.165:P0KE S+13,
165
217 G0SUB 220:G0T0 290
220 POKE S+18.65:F0R T=l TO
170:NEXT:P0KE S+17,1
:FQR T=l TO 75:NEXT
:P0KE S+18,64
230 FOR T=l TO I70:NEXT
:P0KE S+17,B:P0KE S*1B,65
:F0R T=l TO 75: NEXT
:P0KE S+1B.64
240 FOR T=l TO 170:NEXT
:P0KE S+17,1:P0KE SU8.65
:F0R T=l TO 75:NEXT
:P0KE S+18,64
250 FOR T=! TO 170:NEXT
:P0KE S*17,B:P0KE S+16,65
:F0R T«l TO 75:NEXT
:P0KE 5*18,64
260 FOR T=l TO I70:NEXT
:PQKE S+17.1:PQKE SMB.65
:F0R T=l TO 75:NEXT
:P0KE S+18.64
270 FOR T«I TO 170:NEIT
:P0KE S+17,B:P0KE 5*18,65
:F0R T=l TC 75:NEXT ►
(POKE S+18,64:RETURN
280 POKE S+4,33:PQKE S+I 1 , 33
:F3R T=l TO 300:NEXT
:POKE S+4,32:P0KE 8*11,32
290 POKE S,97:P0KE S+1,8
:POKE S+7,152:P0KE 8*8,3
:X=25:Y=18:Z=15
300 POKE S+4,33:P0KE S+11,33
:FOR T=l TO 100:NEXT
:POKE S+4,32:P0KE S+11,32
310 FOR TM TO 180:NEXT
:POKE S+14,35:P0KE S+15,3
:SOSUB 220:P0KE S+18,32
:FOR T=l TO 30:NEXT
320 POKE S+18,33:F0R T=l TO
100:NEIT:F0R X=3 TO 255 S
TEP 2.5:P0KE S+15,X:NEXT
350 POKE S+14,48:P0KE S+15,4
:GOSUB 220: POKE S,251
:POKE S+1,4:P0KE S+7,247
:POKE S+8,9
360 POKE S+4.33:P0KE S+11,33
:FOR T=l TO 300: NEXT
:POKE S+4,32:P0KE S+11,32
370 POKE S,97:PQKE S+1,8
:POKE S+7,152:P0KE S+8,5
:X=25:Y=1B:Z=30
380 POKE S+4,33:P0KE S+11,33
:FOR T»i TO 100:NEXT
:POKE S*4,32:P0KE S+11,32
390 FOR T=l TO 180: NEXT
:POKE S+14,35:P0KE S+15,3
:GOSUB 220
400 POKE S+6,249:P0KE S+13,
249: POKE 5*20,249
410 POKE S,30:P0KE S+l.X
:POK£ S+7,209:P0KE S+B,Y
:POKE S+14,210:P0KE
420 POKE S+3,8:P0KE S+10,8
:SYS 49160.-F0R T=! TO 200
:NEXT:SYS 49181
:FOR T=l TO 15
430 X=M:Y=Y-1:Z=Z-1
:POKE S+U:POKE S+8,Y
:POKE S+15,Z:NEXT
:POKE S+20,241
440 POKE S+14,48:P0KE S*115,4
: GQSUB 220:P0KE S,25l
:POKE S+1,4:P0KE S+7,125
:POKE S+8,2
450 POKE S+4,3:PQKE S+11.33
;fOR T=l TO 250:NEXT
:POKE S+6,242:P0KE S+13,
242
455 POKE S+4,32:P0KE S+11,32
;FOR T=l TO 10:NEIT
460 POKE S,97:PQKE S+1,8
:POKE S+7,152:P0KE S+5,5
470 POKE S+4,33:P0KE S*ll,33
;FOR T=l TO 100:NEXT
:POKE S+4,32:PQKE S+11,32
480 FOR T=l TO 180:NEXT
:POKE S+I4,35:P0KE S+15,3
:GOSUB 220:P0KE S+18,32
:POKE S+23,244
490 POKE S+6,247:P0KE S+13,
247:P0KE S+20,247:A=200
:B=150:C=126:F0R T=l TO 1
30: NEXT
500 POKE 992,17:P0KE 993,17
:POKE 994,17:P0KE S+18,65
:F0R T=20 TO 120 STEP 2
:POKE S+22,T
505 NEXT: FOR T=120 TO 20 STE
P-2:P0KE S+22,T:NEXT
:POKE S+1B,64:F0R M TO
100:NEXT
510 POKE S,165:P0KE S+1,A
:POKE S+7,96:PQKE S+8,B
: POKE S+14,225:P0KE S+15,C
511 POKE S+23,4:P0KE S+22,220
520 SYS 49160:F0R T=l TO 100
: NEXT: FOR T=l TO 1B6:A=A-1
:B=B-.75:C=C-.63
:POKE S+l.A
530 POKE S+8,B:P0KE S+15,C
: NEXT: POKE 5+8,22
:POKE S+15,8:F0R T=l TO 1
00: NEXT
540 SYS 49181:F0R T»l TO 30
:NEXT:SYS 49160
:FOR T=l TO 100:NEXT
550 SYS 49181:F0R T=l TO 180
:NEXT:SYS 49160
:FOR T=l TO 75:NEXT
560 SYS 4918t:F0R T=l TQ 180
:NEXT:SYS 49160
:FOR T=l TO 75:NEXT
570 SYS 49181:F0R T=l TO 180
:NEXT:SYS 49160
:FQR TM TO 75: NEXT
:SYS 49181
580 FOR T=l TO 40: NEXT
:POKE S,135:PDKE S+1,33
:POKE S+7,31:P0KE S+8,21
:P0KE S+14,97
590 SYS 49160:F0R T=l TO 70
:NEXT:SYS 49181
:FDR T=l TO 550: NEXT
: POKE S,15:P0KE S+1,67
600 POKE S+7,135:P0KE S+8,33
:P0KE S+14,48:P0KE S+15,4
:POKE 992,33:P0KE 993,33
610 POKE 994,33:SYS 49160
:FOR T=l TO 100:NEXT
:SYS 49181
700 POKE 53272, (PEEK (532721 A
ND 240J0R 4
710 POKE 53270,PEEK(53270)AN
D 239
720 POKE 53265.155
730 POKE 53281, BC:POKE 646,FC
800 POKE 53280,11
:POKE 53281,12
801 GOTO 840
805 PR I NT ■ C CLEAR , WH I TE , UP2 ,
SPC163*******"
810 PRINT"
[NHITE.CH, RVSON,C83
'SPIKE! [RVS0FF,C6,NHITE]
B20 PRINT"tNHITE,SPC16,CT73";
830 RETURN
840 GOSUB 805:PRINT"[H0HE,
D0WN5.SPC63HELL0 AND HELC
ONE T0ISPC.RVS0N3ISPIKE!
[RVSOFF]."
850 PRINT i [00NN,SPC6]Y0U ARE
A PUNK, HENCE THE NAME"
860 PRINT"[SPC6,RVS0N3
!SPIKE'[RVSOFF].YOU MUST
TRAVEL THE"
870 PRINT"[SPC63PQNER GRID.
AND AVOID THE'
B80 PRINT"[SPC6,RVSON3
ISPARKS BRQS'[RVS0FF,SPC3
WHO GIVE YOU"
890 PRINT"CSPC63A SHALL SHOC
K.YQU CAN NTHSTAND"
900 PRINT"[SPC6]F0UR OF THES
E SHOCKS BEFORE YOU"
910 PRINT"[SPC6]BEC0NE AtSPC,
RVSQN3FRIZZEL! [RVS0FF3
THE CONTROLS ARE":
920 PRINTTSPC63FAIRLY HARD
TQ 6ET USED TO AS"
930 PRINT"CSPC63THE SCREEN
IS TILTED ON A'
940 PRINT"[SPC6]45 DEGREES
ANGLE AND THEREFORE"
950 PRINT"ISPC63THE JOYSTICK
CONTROLS BECOME:
960 PRINT-CSPC63JOYSTICK FOR
NARD=NE*
970 PRINT"[SPC63JOYSTICK BAC
K[SPC33=SN B
980 PRINT" CSPC63 JOYSTICK LEF
TISPC3J=NH-
990 PRINT"[SPC63J0YSTICK RI6
HT[SPC23=SE"
1000 GOSUB 5000: GOSUB 805
1010 PRINT'tHOHE, DOWNS, SPC63
THIS ADDS A DIFFICULTY"
1020 PRINT'[SPC63FACTDR TO
THE GAME. TO COMPLETE"
1030 PRINT'[SPC63EACH LEVEL
YOU MUST FIND AND"
1040 PRINT" ESPC61ENCL0SE THE
HIDDEN COMMODORE"
1050 PRINT'[SPC6364 COMPUTER
IN IT'S 6RIDDED"
1060 PRINT" [SPC63DIAHOND. YOU
CAN TELL HOW FAR"
1070 PRINT'[SPC63FROH THE
COMPUTER YOU ARE BY"
1080 PRINTTSPC63THE SONAR
BAR AT THE TOP OF THE"
1090 PRINT" [SPC63SCREEN. WHEN
THE BAR IS SHALL"
2000 PRINT"[SPC63
YOU ARE CLOSE AND WHEN
IT'S'
2010 PRINT"[SPC63LARGE YOU
ARE FAR AWAY. IF YOU"
2020 PRINT" ESPC63ENCLOSE THE
WRONG GRID IT WILL"
2030 PRINT"ESPC63TURN BLUE,
THIS LOWERS YOUR"
2040 PRINTVSPC63
BONUS POINTS AT THE END
OF THE"
2050 PRINT"[SPC63LEVEL.YOU
SCORE 10 POINTS FOR"
2060 PRINT"(SPC63CR0SSIN6
A SIDE OF A GRID AND"
2070 PRINT-CSPC6JA BONUS FOR
FINDING THE COMPUTER. "
3000 GOSUB 5000: GOSUB 805
3010 PRINT"[H0HE,D0WN5.SPC63
AT THE BE6INING OF THE
GAME"
3020 PRINT"[SPC63
YOU CAN SELECT A STARTING
LEVEL"
3030 PRINT'[SPC63(l-9) AND
A DIFFICULTY LEVL (E/H).
3040 PRINT"[SPC63THESE ARE
SET TO 5 AND H WHEN"
3050 PRINT"ISPC63Y0U FIRST
START BUT CAN BE'
3060 PRINT" CSPC63CHANGED BY
PUSHING (1-9) OR"
3070 PRINT"[SPC63(E/H) FOR
EASY AND HARD. ANOTHER"
3080 PRINTUSPC63
USEFUL FEATURE OFtSPC,
RVS0N1!SPIKE![RVS0FF,SPC3
IS"
3090 PRINTTSPC63THE ABILITY
TO PAUSE THE GAME"
4000 PRINT"ISPC63BY PRESSING
THE SHIFT KEY OR THE"
4010 PRINT" [SPC63SHIFT/LQCK
KEY."
4020 GOTO 5030
5000 PRINT'tD0WN,SPC6]PRESS
SPACE BAR TO CONTINUE. .
eupj" r
5010 SET A$:IF A$<>" 'THEN 5 SPACE BAR TO PLAY. [UP]'
010 5040 6ET fl«: IF A$<>' 'THEN 5
5020 RETURN 040
5030 PRINT i [D0HN,SPC9]PRESS 5050 SYS 32768 ■
3276B: 16? 005
141
190
207
169
072
141
180
207
032
019
252
32780:144 169
AA7
007
141
AA 1
201
A A7
207
169
A| A
040
4 41 1
141
AAA
200
A A7
207
4 / n
169
Alp
015
32/92:012 141
1 DO
m
1AT
207
i t ft
169
ftftA
000
141
ATQ
039
208
• ii
162
All
024
t CT
157
IftT
203
710ftliftAA til
32804:000 212
202
iii
224
let
255
Iftft
208
248
169
ATA
070
141
1C1
254
1A7
207
I Tft
17B
32816:167 120
141
1CT
253
1AT
207
169
ICC
255
< 1 1
141
Ait
015
A 4 A
212
1 1 4
141
i ni
1B2
AftC
005
Twin. "Ai tin
32828:207 169
i in
128
4 M 4
141
A | ft
018
1 1 1
212
169
All
064
4 4% 4
141
136
AAA
002
169
AAA
080
Tift 1 A . ftft t 4 1 «
32840:001 141
246
207
169
A I ft
019
ATI
032
1 4 A
210
255
lift
169
AAA
000
141
1 A I
126
32852:032 208
1 "IT
173
A 4 A
014
220
041
AC 1
254
141
A 1 A
014
AAA
220
4 1 C
165
AA t
001
A7 4
031
TIQi I.Ai < ne 1
32864:041 251
133
A A 4
001
160
AAA
000
4 nc
1B5
AAA
000
AAA
20B
1(7
153
AAA
000
AAA
080
AAA
028
328/6: 183 000
1AQ
209
1 CT
153
AAA
000
not
OBI
1 oc
185
AAA
000
1 1 A
210
1 C 1
153
ftftft
000
Ann
082
Aftl
086
32ooB: 183 000
11 ■
211
153
AAA
000
AQT
093
I QC
IBS
AAA.
000
1*1
212
1 CT
153
AAA
000
Am
0B4
1 Al
106
71QAA. 1 OC AAA
32900: 185 000
11 7
213
• CT
153
ftftA
000
AQC
085
185
AAA
000
i f ■
214
■ CT
153
AAA
000
A A 1
086
4 A /
126
Tintl-lftC AAA
32912:185 000
A + c
215
4 t7
153
AAA
000
Am
087
AAA
200
AAA
208
AAf
205
iff
165
AA 1
001
009
036
7flf\fl j AAA i 7 7
32924:004 133
•
A A t
001
4 7 7
173
Aid
014
AAA
220
AAA
009
001
141
014
220
169
231
32936:198 141
000
221
169
008
141
024
208
032
183
128
085
32948:076 219
128
120
169
127
141
013
220
169
001
141
168
32960:026 208
169
000
141
018
208
173
017
208
041
127
248
^ f% f\ 7 A tit A A ^
32972:141 017
208
169
119
141
020
003
169
140
141
021
213
32994:003 088
096
032
225
128
076
249
128
169
089
133
096
7aj\a i a^a ■ i ~
32996:252 160
000
133
251
169
000
145
251
200
208
251
200
33008:230 252
166
252
224
12B
208
243
096
169
016
160
080
7«AH n AAA * r* ^
33020:000 153
000
064
153
000
065
153
000
066
153
000
035
7 7 A 7 A A 1 7 AAA
33032:067 200
208
241
169
022
141
248
067
169
006
153
163
33044:000 216
153
000
217
153
000
218
153
000
219
200
013
33056:208 241
032
182
137
032
043
129
076
187
129
032
180
33068:133 139
169
001
133
002
169
050
141
255
207
172
079
^ ^ A A A AAA rt & ~^
33080:255 207
162
000
032
239
139
232
224
151
240
005
150
33092:136 192
030
208
243
173
255
207
024
105
020
141
010
771 A | ftPf A A7
33104:255 207
AA 4
201
AA a
200
tit
144
A At*
225
169
01Q
141
255
207
174
220
33116:255 207
4 J A
160
AAA
200
A 7 A
032
A 7 A
239
139
136
232
224
151
208
227
33128:247 173
ice
255
207
A A 1
024
1 A t?
105
AAA
020
did
141
Apr
255
207
201
151
042
77 i j a 4 ■ j nnn
33140: 144 229
169
t AA
190
141
n r r
255
A A 7
207
172
255
207
162
000
199
771 CO» ft9'\ A7A
33152:032 239
4 7A
139
232
AA I
224
art
151
AAA
240
005
200
192
200
208
142
T 7 H 1 1 * 1 1 7 7
33164:243 173
255
AA 7
207
a r i
056
A77
233
020
141
255
207
201
022
105
77J 71 _ 4 7/ Anp
33176:176 225
i * a
169
AAA
020
141
Art*
255
207
174
255
207
160
030
123
77| flfl. A7A A7B
33188:032 239
4 7A
139
AAA
200
A7 A
232
A A 1
224
151
AAA
208
247
173
255
207
167
33200:024 105
AAA
020
J 1 4
141
AC P
255
AA 7
207
AA d
201
d r d
151
,ii
144
AAA
229
A A J
096
J69
126
T7H 1^ ftfl/ i 77
33212:096 133
Af 1
252
4 1 ft
169
A 7 A
032
1 77
133
254
d 1 A
160
AAA
000
133
251
133
142
33224:253 177
APi
251
145
AC 7
253
AA A
200
AAA
208
A t\ A
249
A7 A
230
HP A
252
A7 A
230
254
086
ttiti .in nen
33236:166 252
in
224
1 IT
127
lAn
208
17ft
239
i TT
177
251
145
1CT
253
AAA
200
4 AA
192
A A i
0B6
7T*i*n.ftii iftn
33248:064 20B
in
247
ATI
032
155
( Tft
139
A 7. A
032
166
4 If
135
A 7 A
032
i t r
145
t A 7
143
4 A 1
186
77^/ A . i J A AA7
33260: 169 007
141
A A I
021
AAA
208
17 7
173
A 7 A
030
AAA
208
A 7 1
076
AAA
212
140
173
002
33272:000 220
141
252
207
041
001
208
043
032
030
139
026
33284:240 003
032
186
138
173
253
207
201
030
208
003
142
33296:076 173
130
173
254
207
201
150
208
003
076
173
048
33308:130 238
254
207
206
253
207
173
252
207
141
249
241
33320:207 076
173
130
173
252
207
041
002
208
037
032
042
33332:030 139
240
003
032
186
138
173
253
207
201
200
062
33344:240 107
173
254
207
201
000
240
100
238
253
207
236
33356:206 254
207
173
252
207
141
249
207
076
173
130
047
33368:173 252
207
041
004
208
037
032
050
139
240
003
194
33380:032 186
138
173
253
207
201
030
240
063
173
254
002
33392:207 201
000
240
056
206
254
207
206
253
207
173
018
33404:252 207
141
249
207
076
173
130
173
252
207
041
184
33416:008 208 034 032 050 139 240 003 032 186 138 173 099
33428:253 207 201 200 240 019 173 254 207 201 150 240 189
33440:012 238 254 207 238 253 207 173 252 207 141 249 031
33452:207 032 155 139 162 255 160 000 200 208 253 232 127
33464:208 250 032 024 136 032 144 136 032 036 137 032 103
33476:029 135 032 030 139 208 008 032 050 139 20B 003 185
I 33488:032 181 133 032 217 130 076 247 129 173 030 208 004
33500:041 001 208 001 096 206 199 207 104 104 032 200 083
33512:143 174 199 207 232 169 032 157 040 064 076 212 145
33524:140 173 241 207 010 141 207 207 176 00B 169 000 131
33536:141 206 207 076 011 131 169 001 141 206 207 173 133
33548:207 207 024 105 013 141 014 208 173 206 207 105 086
33560:000 024 106 106 141 206 207 173 016 208 041 127 099
33572:013 206 207 141 016 208 173 240 207 024 105 041 0B1
33584:141 015 208 169 001 141 046 208 169 023 141 255 029
33596:067 162 254 154 173 021 208 141 205 207 169 129 158
3360B: 141 021 208 032 081 143 032 081 143 032 081 143 186
33620:169 000 141 202 207 169 004 141 203 207 173 203 111
33632:207 074 144 008 169 010 141 204 207 076 113 131 044
33644:169 020 141 204 207 173 203 207 141 245 207 169 146
33656:010 141 244 207 032 252 135 172 242 207 174 204 092
33668:207 204 240 207 208 OOfl 236 241 207 208 003 076 129
33680:154 131 032 055 134 208 003 238 202 207 173 204 093
33692:207 024 105 020 201 160 240 010 201 150 240 006 184
33704:141 204 207 076 113 131 238 203 207 172 203 207 222
33716:192 020 208 166 160 000 185 195 132 032 210 255 143
33729:200 192 021 208 245 169 000 174 202 207 032 205 255
33740:189 169 032 032 210 255 169 042 032 210 255 169 176
33752:032 032 210 255 169 000 174 200 207 032 205 189 129
33764:169 032 032 210 255 169 061 032 210 255 169 032 062
33776:032 210 255 173 200 207 141 245 207 173 202 207 188
33788:141 244 207 032 252 135 174 242 207 173 243 207 205
33800:032 205 189 169 032 032 210 255 169 146 032 210 153
33812:255 173 200 207 201 070 240 006 024 105 005 141 111
33824:200 207 173 242 207 056 233 010 141 242 207 141 043
33836:221 207 173 243 207 233 000 141 243 207 013 221 105
33B48:207 240 020 144 018 162 253 160 000 200 208 253 129
33860:232 208 250 162 011 032 035 134 076 034 132 234 072
33872:169 000 141 021 208 169 096 133 252 169 032 133 067
33884:254 160 000 133 251 133 253 177 253 145 251 200 254
33896:208 249 230 252 230 254 166 252 224 127 208 239 183
33908:177 253 145 251 200 192 064 208 247 169 007 141 122
33920:046 208 173 254 067 141 255 067 162 039 169 032 205
XX9X?*1S7 l?fl 0A4 70? ??4
JJ7JAilJf Uv Vul tV* Aa"
007
^OR
? 4R 'AO
ftia iou
006
VVO
IRS
lOJ
?'6
4lD
14 e
llw
XX944'IX7 1ST OSS 1XR IRS
JJ7TT.1JA . .__ 100 10J
??x
44J
IX?
104
ISX 0A9
1JO .--
1XR
100
1XA
1JO
19?
1 7A
0S9
VJ7
XX9S6-7SS 70R 7X9 OX? 14S
JJ'JUi 4U0 407 vOft It.
14X
l^J
17X
l/J
70S 707
4UJ 4U/
0SA
UJO
04?
Vlft
141
111
?1fl
410
33968*021 ?0R OX? 1 66 1XS
tlv7Dbi\/4l 4VO VJ» iDO IOJ
169
107
000
VVV
174 701
1 / T ft V 1
?07
ftv /
1S7
i j /
0R0
vov
190
1 7V
33980:064 238 201 707 076
71?
4.1 4
140
i IV
1S9 019
1 JI V 1 I
017
V 1 /
017
VI /
017
VI*
019
VI 7
33992:029 029 029 029 079
029
U4T
079
v4 J
079 0?o
V4 1
01R
vlo
066
voo
079
V/ 7
1'?
1 ■ ft
X4004-07R ORS ORX 0X7 010
OiUVIiV/O VOJ VOO VOft V1V
0*0
010
0A0 0Q0
1 10
1 IV
1X0
10V
010
V7V
999
AAA
X401A«0flO 170 0S0 090 110
jtviOiVdv i/v vjv u~u nv
1 AO
Law
) 1?
lift
7(7 7(17
41/ AV/
110
ItV
71 A
AlO
?A1
9S1
ftJl
71A?0»7AA AX9 171 9A1
oiVftOiftUU UOft U33 IOt! ftvl
AA7
ft40
AQ7 979
070 ftdft
A79
00ft
ABC
Ojj
• 7 J
»o4
111
'ifllA»?A1 AA? 7AQ f\QS 7A7
j*>U4U:zU1 00i a0o 0o3 tUi
7(\7
ATI
004
ACC IT J
0j3 1o4
OA 1
ftOl
AAA
00a
AAQ
aUo
-T^
7iA e .?»A7t 177 lit 7A7 A7i
oivjftlQ/o wo ftlo £Vf 0i4
10 J
A1 0
017
I/O ATI
16o 00ft
-EC
03j
1 T *
.04
7A1
ftOl
1 XI
lo4
TIAAl'AA? 7AQ At? 977 779
j*hjo*>: uu*. ftuo uoa AOi
nx*i
Oi*
033
ITI 1A«
AAA
00a
7AQ
aOB
ACT
VJO
1 c.7
13/
X407A-17X 717 907 074 10S
. " . ■ j . . . ill ivl 1VJ
009
170
1 IV
17X 7IA
I/O ftlO
907
ftV/
071
VaI
1 VJ
199
144
T4f)RR'009 1AR OX? OSS 1X4
»TVOOiVV7 100 VOft VJJ 101
?01
007
Vvft
?0fl OX?
AvO UOft
9A0
»vv
900
aVV
OX* 1
VOA
0*7
VoO
X11A0-0SS 1X1 701 00? 70P
Oil VV. VJJ 101 ftVl VVft aVo
o?x
V4 0
177
l/J
717 707
All ftU/
OSA
VJO
?X7
40v
009
VV7
0X1
U01
X411?«170 0X9 OSS 1X4 701
JllUt »/V VOft UJJ 101 4V1
007
?0H
ftVO
009 1XA
vv7 100
1XA
IOO
OX?
VOft
OSS
VOJ
710
ftl V
X4174-1X4 701 00? 740 001
JliftlilOl AVI VVft ftlV VV1
09A
UTG
174
?17 707
41/ iwl
17?
1/4
71A
AlO
707
ftV/
X11XA>?7A ?11 707 90P 017
O^lOOJftOO 41I ftl/7 aVC Vlft
1 S?
—
0*^1
10S 010
ivj uiy
7AS
AVJ
^lO
AlV
907
ftU/
117
110
34148:208 003 076 245 130
162
on
032 035
134
169
003
028
34160:133 002 169 255 141
246
207
141 214
207
172
216
167
34172:207 200 238 246 207
173
246
207 201
019
240
044
048
34184:201 010 144 006 206
214
207
076 149
133
238
214
142
34196:207 173 217 207 024
109
214
207 141
215
207
173
194
34208:217 207 056 237 214
207
170
202 232
032
239
139
008
34220:236 215 207 208 247
076
125
133 096
172
253
207
043
34232:174 254 207 192 040
* ■ *- •* ** * * ' 1 — ■ A, V ' A to * .
240
016
VI D
19? 0X0
174 VJV
740
41V
01?
VIA
9?4
bfti
?1X
410
34244' 150 740 008 152 056
233
020
V4V
1AR OX?
ISO VJ4
7X0
40V
132
1 J4
17?
1/4
2SX
4 J V
34?S6'?SX 707 174 254 207
192
17 4
030
v Jv
740 0?1
ATv vAl
774
441
000
VVV
740
41V
70?
4V4
X4?6R'0t7 774 010 740 OH
viiDOi VI / Aftl V1V »*V V 1 J
1S7
1 J4
0S6
v JO
7XX 010
4J0 Vlv
1AR
1 00
1X8
1 JO
OSA
VJO
001
VV 1
X4?R0<?XX 010 170 OX? 7X0
JTtQVi iO J vlv 1'V VJft tJv
1X7
i . -
17?
1/4
7SX ?07
4J0 aU'
174
i/i
?S4
4J1
?07
4V /
00?
VV4
X4?9?> 19? 0X0 740 071 774
U'i'ti lli VJV ilV Vil ftftl
ISO
1 Jv
740
41V
017 ??4
VI/ 441
140
11V
?40
41V
on
VI 0
1RX
1 0 J
X4Xfl4'1S? 0S6 7XX 010 16R
OUVlilJft VJO AJJ Vlv 1DD
1 TO
1 JO
074
VAT.
10S 010
1 v J Vlv
no
1 1 V
OX?
V JA
7X0
4JV
04R
vio
X4X1A-1X? 17? 7SX 707 174
■ ..-1 1/4 AJ« ivi A/T
7S4
- - ~
4 v /
19? 700
i 7ft ivv
240
4TV
01 1
V 1 1
19?
174
198
1 70
X4X?Pt100 ?40 007 ??4 ISO
.**-_-■:. . VV/ ftftl lJV
910
4*H.
OOX
uUo
0X7 77fi
UOa # aOU
1X7
104
09A
V70
t go
107
791
441
X1X10-00A 0A1 701 0S7 740
OlOlv»VVV V07 iVl VJ/ ftlV
001
9S1
4J1
000 0A4
09A
V70
1A9
107
01P
UIO
709
ftV7
X4X*%7i157 AAA AA1 9A9 A7t
ATP
OiS
1 7 J
li4
tc'j A77
IJ4 U/4
1 TO
100
A79
v/4
i to
l07
A70
V07
717iliAQt tXX 759 ItO AAA
-njoilUVa ftjft 107 UUU
■ TT
1-J
a31
1 70 A77
loo 0/a
A7i
V/1
All
U/t
1 7A
1/0
Ooo
uniiin A77 A7i A7/i a7h
d*»j/6:ljft 0/* 0/4 0/4 074
1 LQ
.00
ftOft
77ft ore
a74 -J-
A * A
a40
At 1
014
162
AC A
zso
XlXRfl.l'l 071 10^ OOfl 1X7
1 11
11*t
919 77A
9*57
A7A
V/O
A7Q
via
APt
. - -
TllOO'171 17A 19? ?"*S 7flA
01 A
1 A*
10-
7C1 A^4
Awl Va**
10S
IVJ
0A1
vDt
1XX
100
0*9
V17
34417-7S1 165 252 105 00'
OTTltl tJl low .Jk IvJ vv«
1XX
25?
A J4
076 097
V 7 D v 7 (
1X4
1 JT
104
1 VI
041
VI 1
1RX
1 0 J
34424:007 168 136 192 255
240
009
230 251
208
** v w
247
230
ft» w V
245
34436:252 076 122 134 104
041
003
170 169
192
141
247
247
34448:207 202 224 255 240
W 1 1 r w 1 to V ' to V to to to I to V W to 1 V
009
078
247 207
078
247
207
04!
34460:076 145 134 200 i73
247
207
049 251
141
ill
221
207
ftvl
159
X447?-'7X 747 707 041 001
J'T/ti ilu i7( iv/ VtI vvl
?0R
01S
vlw
07R 747
V( O AT '
707
ftV r
07R
via
947
fti/
1?S
i ft j
34494- 707 078 771 707 07R
771
44 i
707
Av f
076 168
V / D 1 JO
1X4
1 Jl
104
1 VI
170
1 / V
003
VV J
X449A-104 1AR 17X 7?1 707
J"*lO» JVl 1DU 1'J 441 4Vf
096
169
107
000 141
VVV 111
??0
44V
707
4V '
16°
1 o •
01°
V 1 i
34508:255 141 2!9 207 174
220
44V
20 7
4V ■
232 236
kVft ft* v w
21°
41 i
207
4V *
240
41V
201
AV 1
34520:061 173 220 207 024
V ~ - ' VtVW4 ft i w ftk ^ V 4> W ' V ft. ~
109
IV 7
910
41 1
207 106
m V i ft V W
141
IT*
718
AID
207
4V (
060
vuv
34532:141 245 207 141 244
207
032
252 135
v ft w W
173
1 ' w
242
414
207
4V /
150
ft W V
34544:056 237 222 207 141
^ * - W . - ' to to ftj to V f ft ■ ft
221
to to •
207
173 243
907
»» .
' 1 37
99X
- — -
054
34SSA-707 01X 771 707 740
v~JJOt4Vf vlw 441 4v' t"v
0?A
W40
144
i ii
009 17'
VV7 1 / •/
?1fl
ftlO
?0 7
4Vt
141
in
010
V 1 V
34568:219 207 076 208 134
173
218
207 141
220
207
076
046
34580:208 134 173 220 207
141
218
207 096
177
I/O
241
207
197
34592:056 237 254 207 144
003
076
04B 135
173
254
207
034
34604:056 237 241 207 141
245
207
141 244
207
032
252
206
34616:135 173 242 207 141
236
207
173 243
207
141
237
094
34628:207 173 240 207 056
237
253
207 144
003
076
088
167
34640:135
173
253
207
056
237
240
207
141
245
207
141
018
34652:244
207
032
252
135
173
242
207
024
109
236
207
112
34664:141
222
207
173
243
207
109
237
207
141
223
207
117
34676:032
198
134
173
218
207
074
074
074
170
168
169
015
34688: 160
157
127
064
202
224
255
208
248
173
218
207
067
34700:041
007
170
189
158
135
153
128
064
169
032
153
003
34712:129
064
153
130
064
096
101
116
117
097
246
234
163
34724:231
160
173
027
212
041
015
201
013
176
247
024
149
34736:105
001
141
241
207
173
027
212
041
007
024
105
180
34748:001
14!
245
207
169
020
141
244
207
032
252
135
190
34760:173
242
207
141
240
207
173
241
207
041
001
208
7XX
400
34772:009
173
240
207
056
233
010
141
240
207
173
241
094
34784:207
141
245
207
169
010
141
244
207
032
252
135
166
34796:173
242
207
141
241
207
173
240
207
024
105
030
178
34808:141
240
207
096
16?
000
141
242
207
162
008
078
147
34820:245
207
144
004
024
109
244
207
106
110
242
207
06!
34832:202
208
240
141
243
207
096
096
162
006
032
086
199
34644:136
208
049
032
106
136
208
044
173
027
212
201
024
34856:064
176
008
169
014
157
183
207
076
080
136
201
231
34868:128
176
008
169
013
157
183
207
076
080
136
201
050
34880:192
176
008
169
Oil
157
183
207
076
080
136
169
092
34892:007
157
is:
207
202
224
255
208
197
096
189
055
008
34904:138
024
125
062
138
141
250
207
008
104
041
001
047
34916:141
251
207
076
085
139
189
055
138
056
253
062
216
34928: 138
144
Oil
141
250
207
169
000
141
024
212
076
089
34940:085
139
189
062
138
056
253
055
138
141
250
207
045
34952:169
000
141
251
207
076
085
139
238
182
207
173
212
HIGH
34964:182
34976:207
34988:138
35000:150
35012:076
35024: 138
35036:254
35048:041
35060:055
35072:076
35084:138
35096:254
35108:162
35120:059
35132:138
35144:144
35156:105
207 205 181
162 006 189
201 030 208
208 003 076
030 137 189
201 200 240
062 138 222
004 208 023
138 201 000
030 137 1B9
201 200 240
055 138 254
006 169 128
105 014 008
074 170 040
003 013 247
041 072 138
207 240 001
183 207 041
003 076 030
030 137 254
183 207 041
073 189 055
055 138 076
189 062 13B
240 036 222
1B3 207 041
013 189 055
062 138 202
141 247 207
072 138 010
173 247 207
207 141 016
010 170 104
096 169
001 208
137 18?
055 138
002 208
138 201
030 137
201 030
055 138
00B 20B
138 201
224 255
189 055
170 104
073 255
208 IB?
157 003
255 141
029 189
055 13B
222 062
023 189
000 240
189 183
240 043
222 062
020 189
150 240
208 128
138 010
157 002
045 016
062 138
208 138
182 166
062 108
201 042
138 121
062 007
066 157
207 119
189 064
138 215
062 070
006 247
096 246
176 128
208 071
208 170
024 184
074 024
35168:170 078 247 207 202 224 255 208 194 076 134 137 180
35180:024 105 014 072 138 010 170 104 157 002 208 138 226
35192:074 170 173 016 208 013 247 207 141 016 208 076 133
35204:080 137 206 246 207 208 035 169 010 141 246 207 232
35216:173 248 207 201 021 240 008 169 021 141 248 207 236
35228:076 164 137 169 020 141 248 207 162 006 157 249 100
35240:067 202 224 255 208 248 173 141 002 201 001 240 082
35252:249 096 162 006 169 007 157 040 208 169 020 157 084
35264:249 067 202 224 255 208 241 162 036 169 003 157 117
35276:120 216 202 224 255 208 248 162 039 169 032 157 188
35288:000 064 157 040 064 157 120 064 157 080 064 202 105
35300:224 255 208 239 160 000 185 069 138 032 210 255 155
35312:200 192 Oil 208 245 160 000 185 088 138 032 210 117
35324:255 200 192 043 208 245 160 007 185 080 138 153 070
35336:000 080 136 192 255 208 245 200 185 131 138 032 018
35348:210 255 200 192 040 208 245 160 000 185 170 138 231
35360:032 210 255 200 192 016 208 245 160 000 185 080 023
35372:142 153 000 069 200 208 247 173 030 208 096 010 044
35334:030 040 060 080 110 130 040 080 170 050 090 140 052
35396:160 158 019 017 017 017 083 079 078 065 082 058 133
35408:126 126 126 126 096 096 096 096 154 019 017 017 151
35420:076 069 0B6 069 076 058 032 032 032 032 032 032 206
35432:032 032 032 032 032 032 032 032 032 032 032 032 232
35444:032 032 032 032 032 032 032 032 032 032 032 032 244
35456:032 032 032 005 019 083 067 079 082 069 058 032 206
35468:048 048 048 048 048 048 032 032 032 032 032 032 108
35480:072 073 071 072 032 083 067 079 082 069 058 032 174
35492:048 048 048 048 048 048 153 019 017 083 0B4 065 105
35504:077 073 078 065 058 032 218 218 218 218 173 249 061
35516:207 041 001 208 009 238 254 207 206 253 207 076 047
35528:247 138 173 249 207 041 002 208 009 238 253 207 124
35540:206 254 207 076 247 138 173 249 207 041 004 208 174
35552:009 206 254 207 206 253 207 076 247 138 173 249 145
35564:207 041 008 208 006 238 254 207 238 253 207 032 087
35576:155 139 162 255 160 000 200 208 253 232 208 250 166
35588:032 024 136 032 144 136 032 036 137 032 217 130 068
35600:032 030 139 208 165 032 050 139 208 160 032 181 112
35612:133 096 173 254 207 024 109 253 207 141 250 207 034
35624:008 104 041 001 141 251 207 076 085 139 173 254 240
35636:207 056 237 253 207 144 Oil 141 250 207 169 000 142
35648:141 251 207 076 085 139 173 253 207 056 237 254 095
35660:207 141 250 207 169 000 141 251 207 173 250 207 231
35672:056 233 010 141 250 207 173 251 207 233 000-141 198
35684:251 207 048 028 173 250 207 013 251 207 240 020 203
35696:173 250 207 056 233 020 141 250 207 173 251 207 232
35708:233 000 141 251 207 076 102 139 096 169 002 133 137
35720:002 162 159 160 031 032 239 139 200 192 200 208 06B
35732:248 202 224 150 208 241 096 173 254 207 010 176 033
35744:029 105 015 141 000 208 173 016 20B 041 254 144 214
35756:002 009 001 141 016 208 173 253 207 024 105 041 072
35768:141 001 208 076 207 139 024 105 015 141 000 208 169
35780:173 016 208 009 001 141 016 208 076 178 139 169 250
35792:002 133 002 174 254 207 172 253 207 032 055 134 041
35804:201 001 208 005 162 012 032 035 134 174 234 207 109
35816:172 253 207 032 239 139 096 072 152 072 138 072 084
35B28:169 096 133 252 169 000 133 251 13B 072 074 074 013
35840:170 152 072 074 074 074 168 202 224 255 240 014 183
35852:165 251 024 105 008 133 251 144 242 230 252 076 101
35864:007 140 136 192 255 240 016 165 251 024 105 064 083
35876:133 251 165 252 105 001 133 252 076 026 140 104 138
35888:041 007 168 136 192 255 240 009 230 251 20B 247 240
35900:230 252 076 051 140 104 041 003 170 169 063 141 220
35912:247 207 165 002 010 010 010 010 010 010 202 224 155
35924:255 240 012 074 074 056 110 247 207 110 247 207 131
35936:076 082 140 200 072 173 247 207 049 251 145 251 197
35948:104 017 251 145 251 104 170 104 168 104 096 173 003
35960:025 208 141 025 208 041 001 240 077 169 012 160 147
35972:059 162 024 142 022 208 141 033 208 140 017 208 216
35984:141 024 208 173 018 208 201 081 144 016 169 000 247
35996:141 018 208 173 017 208 041 127 141 017 208 076 251
36008:206 140 169 000 141 033 208 169 200 141 022 208 013
36020:169 027 141 017 208 169 004 141 024 208 169 081 002
36032:141 018 208 173 017 208 041 127 141 017 208 076 031
36044:049 234 104 168 104 170 104 064 169 070 141 254 043
36056:207 169 120 141 253 207 162 039 169 032 157 120 200
36068:064 202 224 007 20B 248 032 155 139 032 029 135 167
36080:173 199 207 201 007 240 057 032 248 141 032 024 009
36092:136 032 144 136 032 036 137 162 255 160 000 200 146
36104:208 253 232 208 250 162 249 160 000 200 208 253 087
36116:232 208 250 173 000 220 041 016 208 220 162 013 227
36128:169 032 157 040 064 232 224 039 208 248 173 030 112
36140:208 076 247 129 162 039 169 013 157 040 216 202 166
36152:224 255 208 248 160 000 162 000 189 041 064 157 228
36164:040 064 232 224 037 208 245 185 037 142 141 077 164
36176:064 152 072 160 000 162 000 200 208 253 232 208 255
36188:250 104 168 173 000 220 041 016 240 010 200 192 170
36200:043 208 211 160 000 076 062 141 162 000 189 007 083
36212:064 221 031 064 240 018 144 021 162 005 189 007 002
36224:064 157 031 064 202 224 255 208 245 076 145 141 148
36236:232 224 006 208 225 162 005 189 031 064 157 192 043
36248:207 202 224 255 208 245 173 000 220 041 016 240 135
36260:249 032 073 145 032 182 137 162 005 189 192 207 233
36272:157 031 064 202 224 255 208 245 169 096 133 252 164
36284:169 032 133 254 160 000 133 251 133 253 177 253 088
36296:145 251 200 208 249 230 252 230 254 166 252 224 045
36308:127 208 239 177 253 145 251 200 192 064 208 247 219
36320:032 145 143 169 007 141 021 208 141 201 207 169 016
36332:040 141 200 207 169 012 141 199 207 076 212 140 188
36344:162 000 189 006 142 032 210 255 232 224 032 208 148
36356:245 096 005 019 017 029 029 029 029 029 029 029 077
36368:029 029 029 029 029 029 029 029 029 080 082 069 252
36380:083 083 032 066 085 084 084 079 078 135 129 141 083
36392:133 160 143 150 133 146 032 046 046 032 016 018 071
36404:005 019 019 032 002 021 020 020 015 014 032 020 015
36416:015 032 016 012 001 025 032 001 007 001 009 014 229
36428:032 046 046 032 000 000 000 000 000 000 000 000 232
36440:000 000 000 000 000 000 000 000 000 000 000 000 08B
36452:000 000 048 000 000 048 000 000 252 000 000 252 188
36464:000 000 048 000 000 048 000 000 000 000 000 000 208
36476:000 000 000 000 000 000 000 000 000 000 000 000 124
36488:000 000 000 000 000 000 000 000 000 000 000 000 136
36500:000 000 000 000 000 000 000 000 000 000 000 000 148
36512:000 000 000 000 000 001 140 000 000 216 000 000 005
36524:112 000 000 112 000 000 216 000 001 140 000 000 241
36536:000 000 000 000 000 000 000 000 000 000 000 000 184
36548:000 000 000 000 000 000 000 000 000 000 000 000 196
36560:000 000 000 000 000 000 000 000 000 000 000 000 208
36572:000 000 000 000 000 000 000 000 000 000 096 000 060
36584:000 240 000 001 248 000 000 240 000 000 096 000 033
36596:000 000 000 000 000 000 000 000 000 000 000 000 244
CG
36608:000
000
000
000
000
000
000
000
000
000
000
000
000
T/nCi.AAA IJA AAA ATA HAfl OCT
200 208 250 173 000 220 204
36620:000
000
000
000
000
000
AAA
000
AAA
000
AAA
000
AAA
000
AAA
000
AAA
000
A 4 ft
012
00700. U^l U10 21V i17 107 VJU
145 240 007 032 210 255 242
36632:000
000
000
000
015
255
255
023
224
049
016
000
093
TiOOrti')?') f\lL IfiQ \tt 177 IDA
36780:232 0/6 10B 144 1/3 loO
207 032
210 255 169 157 011
36644:001
035
102
051
102
219
051
075
108
103
199
254
056
TiOOOiftT? 11n Ti 8 ! AT*? "7TG 9 c ' 1 e i
36VY2:032 210 2DD 032 22o 2DD
20B 010
173 000 220 041 000
36656:102
128
000
014
255
255
252
255
255
248
000
000
AAA
020
TTrtnlifMi Oil n7i 1 L7 111
3/004:01o 20o 244 O/o 16/ 144
201 013
240 017 201 069 200
36668:000
000
000
000
000
000
AAA
000
AAA
000
AAA
000
AAA
000
AAA
000
AAA
000
A / A
060
77IM1.91I"! flfi? *7A1 "7"? °Art A(1T
j/uio;i4y uw 2V1 u/2 2'rv uuj
076 131
144 141 180 207 002
36680:000
000
000
000
000
000
000
000
165
162
A AT
007
lift
169
063
TTAAO.ATA HIA ACC *I7< AC 1 1 LQ
37028:0j2 Z10 255 234 056 16V
010 237
190 207 010 073 055
36692:000
157
000
212
202
224
255
208
248
a i n
169
141
1 A 4
141
ft 4. ft
249
TTAIA.ACC ATI 1 AC AAH 1(1 177
37040:255 024 105 002 141 ill
130 141
251 138 141 004 149
36704:024
212
169
005
141
005
it *i
169
218
ill
141
A A I
006
ft i ft
212
074
TTACA.'it ITT IDA AAT All HTT
37052: 141 173 180 20/ 056 *.3-
069 074
073 001 141 1B1 181
36716:16?
150
141
001
212
169
139
141
000
212
169
017
092
T ~T i"i 1 i ftA^ 4fft AAl 47T " A A Aflf
37064:207 169 001 133 204 QY6
014 147
017 017 159 018 102
36728:141
004
212
160
140
162
000
232
208
OCT
iJJ
200
208
248
T T A 1 / A ft ft Aftft AftA Aftft Aftfl AOO
37076:029 029 029 029 029 029
029 032
032 032 032 032 063
36740:250
169
016
141
004
212
232
208
253
200
208
HP *
250
ftft ~*
227
TTAOQ.AT1 ATA A 1 7 1C1 < CT 1 C.7
37088:032 032 01/ 15/ 15/ 15/
157 157
157 157 032 211 111
36752:096
160
000
169
000
153
000
212
200
i nn
192
a An
008
ft Aft
208
AA f
006
T71rtrt-7A0 7*1 7AT 107 "T7 'i-
J/lUvIiUO ivl ivO 17/ UOi HO
032 045
032 005 032 194 027
36764:246
169
143
141
024
212
169
a a n
008
141
005
ft 4 ft
212
■ i n
169
AAT
003
77119«AQ0 AT? 911 A7* 1 HAS A7R
069 032
211 084 069 086 066
36776:243
141
006
212
169
129
A 4 1
141
AA J
004
212
4 1 ft
162
Ace
255
i ii
142
1 oo
192
T71?l>A/.0 A7R (1H7 (117 099 fl?9
i}/1Z b iUQ7 U/0 vOO yiO U47 UiT
029 029
f r - n Ann Apt n i r n a a n
029 029 029 159 097
36788:001
212
202
160
255
136
192
A A 4
001
ft Aft
208
251
224
AA 1
001
IT 1
231
7717A-A1P AT? AT? AT? AT? AT?
032 032
■ ■ -* A A ^ A I A 4 A C 4
013 013 013 013 054
*i AAA AAA
36800:208
All
241
4 t f\
169
128
141
004
212
096
162
000
1 LQ
l07
AAA
100
T711R |A n (1?9 0?9 0?9 0?9 029
029 211
a n A A i A A ( Aj A f ft ft A A
080 069 069 068 200
4] Ai A 1
36812:157
AAA
000
212
n at At
224
a An
008
208
248
169
143
.4.
A" J.
1 70
Wo
T7IAA-AT? AAA A10 f\AF AS7 All
O/lOV.Uwi UtU Ut7 ytj UJ/ VM
063 032
159 000 013 013 072
36824:212
tin
169
017
111
141
AAP
005
Aj J A*j
212
169
"it T
213
4 1 1
141
AA '
006
HI H
212
1 LQ
107
U7V
T717?.A!T A?0 A?9 A?9 A?9 fi?9
jHlLiVli Vti vLl Ui7 Ui7 Vi7
029 158
197 065 083 089 063
36836:002
141
003
212
169
100
141
AAA
002
212
169
A A C
005
4 J 4
141
A 1 C
245
TT < O I . A fl T 1AA AH ADT 1 i. D AtT
37184:047 200 065 082 068 063
032 159
000 120 173 013 062
36848:001
212
169
135
141
000
212
4 I fi
169
065
141
AA 1
004
212
165
T7l0t»"?A AAO 1 ?0 111 A1T ??A
3/176:^4.0 UOY uT 111 UlO l£v
169 000
141 026 208 169 241
36860:169
252
160
000
162
000
200
*\ Aft
208
ft B 9
253
ft ^ft
232
ft An
206
HCA
250
All
042
T79A0»9T1 111 A?1 AAT 1 AO A10
j/iUBi/jT 141 vil WO 107 y*7
141 020
003 088 169 021 123
36872:024
105
001
208
Air*
245
169
A 1 i
064
4 1 4
141
004
212
Art i
096
162
i cn
15?
T779Ai1l1 A?l ?AB 1A0 A?7 111
o/iiUllnl Ui4 £\Ja 107 y^/ 1t1
017 208
169 199 141 000 00B
36884:000
142
033
208
142
032
208
189
206
144
240
007
035
37232:221 169 004 141 136 002
169 000
141 021 208 032 076
36896:032
210
255
232
076
027
144
234
173
190
207
105
125
37244:019 144 169 064 141 136
002 169
198 141 000 221 24B
36908:048
032
210
255
169
157
032
210
255
032
228
255
135
37256:169 008 141 024 208 169
216 133
252 160 000 132 212
36920:208
010
173
000
220
041
016
208
244
076
091
144
207
37268:251 169 006 145 251 200
208 251
230 252 166 252 225
36932:201
013
240
019
201
049
144
233
201
058
176
229
040
372B0:224 220 208 243 032 183
128 169
255 141 182 207 048
36944:072
056
233
048
141
190
207
104
032
210
255
162
254
37292:096 253 208 068 069 131
000 000
000 000 083 000 056
• COMMODORE 64 • TRANSFER ALL MAJi
| LOOK AT DOSOFT'S NEW OFFERINGS
s AND SEE WHAT'S IN THEM FOR YOU
• AUTOMATIC • NO USER KNOWLEDGE •
I
9
>
'The best transfer utility of the lot 9
Your 64
13 MegaTransfer Disk
Our complin Cfrilcction til up*' to disk
iniWrr lit ill i us liners ij/Zihc mjfor lufTM)
loading systems, including (be Iju*m
)<inihinjiti>n picturrAmpc liudcrs. jnd
Individual n mimes for unusual loaders
• Now incorporate* IXSKl'S I (previous
price All) (or your sianilartl load tape
collection * All transfer is automatic
• No special hardware or user knowledge
required • Kfnimi use of disk space
• Transferred program* reload indcpcndcnily
• MegaTransfer Disk w ill transfer pn>granis
winch NO Other utility will handle • An
essential purchase. IJon'i confuse Megalransfei
wiih similar unliiics
which have severely £ "|
Hulled capabilities obi /
HMegaUtilityDisk
A handy t olleciton of uiililic* lo make the
rx-wofyuur IS41 and&t \er> fx>t \try
coiwenH-ni • Alphaload l>»sk lurtxt
Loader Load your programme* ai over
R >l R lime* the normal rate. Example 2(M)
hlock* Normal speed HO seconds Wiih
Alphaload |usi Ml second* • Rut Copy
H^S^^SSSS^i^ «AV1I SAVEI SAVE! When you buy any .wo HOW to gCl yOUf DoSoftWart
• Tu Hmi F I IrOaw onv »r l^rirll nn >v raiiis «»t McR^raittfrrDI^.Mfgrf.'iHIty Dbk. All pr<»gram*f^f..mm.xlorr64.
te^rSdfcta?r^^^fS5^ or^oteHMta&I^Of^ fcgffil _farfaa c teafli oro tic
sp.i-d • I'm sprite A high class sprue Or save**.* on our Complete collection (l«-p* y ), z ()aktiMKtr avc.
litirarvitdiior. 100% (cvcr>- pnigram in this Ad. including Blackpool FY 2 Otfc
machine code. £1 'ISO Profeviional l>isk u>lapeamlMega3ape UK postage included Kumpcadd ~^P
nwick control 3L> 1 a^ • at only »»}9.99 (single dbk). Oversea* add £1 SO for airmail
AND SAVE MONEY TOO!
|| Disk to Tape Plus
A versatile tolled ion of Disk lo-Tapc routines
for single and multipart pnigrams Keaiuring
( mr new tape turho loader with Visible
Screen and strip * Automatic
disk lo tape • Outputs pnigram sections Hi
U|n- as the* load fmm disk * Selective disk
to tape transfer with or without hoot loader
• Maximum file length 207 hkicks
• Not for pnMecledcommcnial disks
• Professional version available— include*
mastering scheduler „ ^ _ _
and duplication V, I /
nglus- i.2S.00
m MegaTapi-
Anoutstanding new liipe-toTape utility for
fast loading pnigrams • < oversrt//thc
major loading systems • No extra hardwan-
required * All you need is a Commodore (•>
and one tape deck • No user knowledge
required • Transferred pnigrams load
independent I) at lurim\pcrii with Vhlbic
Screen ami- • DmHc
\aluc — incorporate* RBS Plus to convert
fUM slow load pn>grams to turbo load
• Also handles KrlS and £050
rastback programs oU^/«
DoSoft
You'll Do it Better
with DoSoft
• FAST DISK UTILITIES • LOADERS • 3-MIN DISK COPY • FAST DISK FILE COPY • FAST FORMAT •
IN THE LAST FOUR ARTICLES
in ihis series I have given all ihe
initialisation and wedge
routines needed to add extra
commands to (he Basic of a C64
computer. I have also given the
code to add 12 new commands
which are; CTL, APPEND,
CHANGE, DUMP, FIND,
AUTO, CHAIN, DELETE,
RENUMBER, MAT, SORT and
VARPTR.
This month I am adding a
further eight commands. These
are, CATALOG, DISK, EXEC,
MERGE, GET, PUT, TYPE and
OLD. Seven of the eight are
special disk control commands,
and eight (OLD) is included
since it is called by the other
routines. These disk control
commands add some very
powerful and useful features to
a disk based 64 system and will
save a considerable amount of
programming time.
All eight new commands
require that the wedge and
initialisation code given in the
first issue are present in
memory at the correct
locations, and that their
command names and entry
points are stored in the correct
tables. These eight commands
are independent of all the
previously added commands -
except APPEND - routines
from which are required by the
new routines. Within this
limitation they can be used
without the previously added
code. To ensure that you have
the wedges and new routines
correctly positioned. The Basic
loader at the end of this article
gives the initialisation routines
and all commands.
In next month's issue I wi
show how to write and add
your own commands to Basic.
All the programs used in this
series are extracted from the
book Advanced Commodore
64 Basic Revealed by Nick
Hampshire and published by
Collins.
GET
Abbreviated entry: G(shift)E
Affected Basic abbreviations:
None
Token: Hex SEE, $OF, Decimal
238,15
Modes: Direct and program
Recommended mode: Either;
different, effects in direct mode
and program mode
Purpose: To input an ASCII file
on disk into memory wilh line
numbers created from 1000 in
steps of 10. GET will read in files
created by the Commodore
assembler and SYSRES. Each
time is read in until a carriage
return is reached. It is then
tokenised and entered into
memory as a program line.
Syntax: Direct mode; GET
filename, d - where di is the
device number (disk only)
Run mode: as chapter 7GET
and GET H .
Errors: Illegal device - if the
device number specified is less
than eight Missing file
Missing file name - if a null
filename is specified.
File not found - if the file does
not exist
Device not present - connected
File open error - if 10 files are
already open
Disk errors - at the end, the
disk error channel is read and
displayed. .
Use: For editing Commodore
assembler files or files for the
use of the EXEC command
Routine entry point: $8ED1
Routine operation: The GET
routine first checks whether
the computer is in run mode or
direct. If it is in run mode, then
the Basic version of GET is per-
formed. If in direct mode, the
file parameters are read in and
checked for a null filename or
the device not being disk. If
these checks are OK, the
message 'reading' filename is
displayed and the file is
opened. Each line is then input
and stored in the input buffer,
tokenised, and entered into
memory until the end of file
marker is reached. The
program is then re-chained
and the variable pointers are
sest to the correct values for the
program. Finally the disk error
channel is rad and displayed.
GET
1000
1010
1020
1030
1040
*C5C
1060
1070
10B0
1090
1100
1110
1120
1130
1140
H5Q
1160
1170
1180
1190
1200
1210
1220
1230
1240
::!C
1260
1270
6ET LDA $9D ;CHECK !F DIRECT
BNE 6ETUN :YES, DIRECT
JSR t0079 ;GET CURRENT CHAR
JMP $AB7E ; PERFORM BASIC 'GET'
GET'JN JSR DPARS :6ET FILE PARAMETERS
JSR GETHES : 'READING'
JSR GETQPN ;QPEN FILE
JSR SETIK :SET INPUT
LDA $2B :SET START OF °SQGRAM
STA $FB ; POINTER
lda *:c
STA IFC
LDA $2B
CLC
adc no:
TAX
LDA $2C
ADC HOC
STA *2E
STA 130
STA iZ2
STX I2D
STX $2F
STX 131
LDA H03 ; START LINE I HI
:STAR T LINEt HI
LDX HEB
STA GETLNM
STX GETLNC
1230 5ETLP1 LDY H00
1290 5ETLP2 JSR IFFCF ; INP'JT SYTE
1300 C«P HOD :END QF LINE 0
62
1310 BEQ 5E7LN : YES
1320 Of #$CA : LINE FEED' 1
1330 BEQ SETLP2 ;YES
1340 STfl $0200. Y ; STORE BYTE
1350 !NY
1360 CPY #$57 ;END OF BUFFER?
1370 BNE 5ETLP2
1380 SETLN LDA $90 : STATUS
1390 STA SETER
1400 LDA #$00 : TERMINATOR
1410 STA $0200, Y ; STORE
!<20 LDX #$00
1430 SIX $7A
1440 LDA #$02
1450 STA $7B
1460 JSR $A57? (CRUNCH LINE
1470 LDA $0200
1480 BEQ GETLP4 ; NULL LINE
1490 LDY #$02
1500 LDA SETLNO jLINEI LO
1510 STA ($FB),Y : STORE IT
1520 !NY
1530 LDA GETLNO*! ;LINE# HI
1540 STA ($FB).Y : STORE IT
1550 GETLP3 INY
1560 LDA $01FC,Y ; SET BYTE
1570 STA ($FB),Y jSTQRE IT
1580 BNE 6ETLP3 ; UNTIL END OF LINE
1590 INY
1600 TYA
1610 LDY #$00
1620 CLC
1630 ADC $FB j INCREASE POINTER BY
1640 STA $FD jLENGTH
1650 STA ($FB),Y
1660 LDA $FC
1670 ADC #$00
1680 INY
1690 STA ($FB),Y
1700 TAY
1710 LDA $FD
1720 STA $FB
1730 STY $FC
1740 TYA
1750 BUI GETEND
11160 -E6f.3EJ[M::IifietfA&E_;-&B*
1770 CLC
1780 ADC t$0A ;BY 10
1790 STA GETLNO
1800 LDA 6ETLNQ+1
1810 ADC #$00
1820 STA GETLNO+1
1830 6ETLP4 LDA GETER j STATUS?
1840 BNE GETEND ; SAD
1850 JHP GETLP1 :D0 NEXT LINE
1860 ;
1870 6ETEND LDA #$00
1880 TAY
1890 STA ($FB),Y ; ZERO END OF PROGRAM
1900 INY
1910 STA ($FB),Y
1920 JSR PUTEND ;CLOSE AND DISK
1930 JSR OLD i RESET POINTERS
1940 JMP $A474
1950 GETMES LDA «<GMES5G ; POINTER TO
I960 LDY «>GHESS6 : 'READING'
1970 JSR $AB1E :PRINT STRING
1980 JMP $F5C1 ; PRINT FILENAME
1990 GHESSG .BYT 'READING ',$00
2000 GETIN LDX $B8
2010 JSR $FFC6 ; SET INPUT
2020 BCS GETIN1 ; ERROR
2030 RTS
2040 GETIN1 JHP $E0F9 ; SEND ERROR
2050 ;
2060 6ET0PN LDY #$00
2070 GET0P1 LDA ($BBJ,Y ;BET BYTE
2080 STA $0200,Y ;STORE IT
INY
CPY $B7 jEND OF FILENAME?
BNE GET0P1 ;NOT YET
LDX #$00
2130 GET0P2 LDA GETSR, X ; BET BYTE
2140 STA $0200, Y ;STORE IT
INX
INY
CPX #$04 ; END OF SR?
BNE GET0P2 : NOT YET
LDA #$60
STA $B9
JMP PUT0P4 ; COMPLETE OPEN
2220 GETSR .BYT \S,R'
2230 GETLNO .NOR 0
2240 GETER .BYT 0
2250 .END _
2090
2100
2110
2120
2150
2160
2170
2180
2190
2200
2210
CATALOG
Abbreviation: C(shift)A
Affected Basic abbreviations:
NONE
Token: Hex $EE,$05, Decimal
218,5
Modes: Direct and program
Recommended mode: Direct
Purpose: To display the
directory (CATALOG) of a disk
in drive unit EIGHT. This
comand will display the
directory straight to the screen
wit
Users of dual disk drives will be
pleased to note that you can
specify which drive to display
by either a number one or zero
after the command. If no
number is specified, the
routine will default to drive
zero.
Syntax: CATALOG (O or 1]
Errors: Syntax error - if the
command CATALOG is
followed by anything but '0,1,:'
or nothing.
Disk error message - after
played, the disk error channel
is read and displayed.
Use: The command is used to
display the directory of a disk.
This can be useful if you have a
program that you wish to save
but need to check if there is
room on the disk or find a file-
name to use. The directory can
be paused when displaying, by
use of the spacebar, and re-
started with any key. Display
can be stopped completely
with the STOP key.
Routine operation: On entry,
the routine checks to see if a
drive number is specified. If no
number is specified or zero,
the character '0' is inserted into
the filename after the '$'. If it is
a one, the character T is
inserted. Anything else will
cause syntax error. The file is
then opened and each line is
read and displayed ignoring
line links. When the directory is
finished, the file is closed and
the disk error channel is read.
Check is the one following str2.
CATALOGUE
1000 CATL0G BEQ CATL01 ; DRIVE 0
1010 CUP #$30 (IS IT 0?
1020 BEQ CATL01 ;YES
1030 CMP #$31 [IS IT 1?
1040 BEQ CATL02 ;YES
1050 JMP tfiPOS j SYNTAX ERROR
1060 CATL01 LDA #$30 ;CHAR '0'
'.070 .BYT $2C
'.080 CATL02 LDA #$31 ;CHAR T
1090 STA DPDIR+1 :ST0RE IN STRING
1*00 LDA #$02 j LENGTH
1110 LDX #<0PDIR : ADDRESS LSB
1120 LDY «>0P0IR ;MSB
1130 JSR $FFBD jSET FILENAME DETAILS
1140 LDA «$0E
1150 JSR GETN1 ; GET UNUSED FILE*
1160 LDX #$08 ;DEVICE 8
1170 LDY #$00 :SA 0
1130 JSR $FFBA ;SET FILE DETAILS
1190 JSR $FFCC ;0PEN FILE
1200 BCC CATL03 :N0 ERROR
1210
1220
1230
1240
1250
1260
1270
1280
1290
1300
1310
1320
PHA ; STORE ERROR
LDA $B8 ; GET FILE «
JSR $FFC3 : CLOSE FILE
°LA ;GET ERROR
JMP $E0F9 ;SEND ERROR
CATL03 LDY #$03
CATL04 STY $B7
LDX $B8
JSR $FFC6 ;SET INPUT DEVICE
JSR $FFCF j INPUT
STA $57 : STORE VALUE
DISK
Abbreviated entry: D(shift)l
Affected Basic abbreviations:
DIM - DIM
Token: Hex $EE,$0A, Decimal
,10
: Direct and program
ommended mode: Either
pose: To send a disk
nd to the disk unit
tax: DISK [string expression)
ere the string expression is:
:TEST"-to scratch the file
: DISK ,00'
ire disk.
-to reformat the
e other Syntax is DISK which
will display the disk error
message to the screen giving a
message tike:
23, READ ERROR/18,01
where 23 is the error number,
18 is the track, 01 is the sector,
and READ ERROR is the error
description.
Errors: Syntax error - if the first
character of the command is
not a quote character.
String too long - if the
command is over 255 bytes
long.
Type mismatch - if the com-
mand is a number, not a siring.
Use: This command is useful in
checking errors created from
disk access by using just DISK
which displays the message. A
Basic equivalent would be:
OPEN 15,8,15
INPUT U 15,E,EM$,T,S
PRINT E", "EM$", "T", "S'V
CLOSE 15
Also, for sending disk
commands such as scratch a file
etc:
DISK "10"
is equivalent to:
OPEN 15 ( 8,15/'10"
For disk commands, refer to
the disk user manual.
Routine entry point: $8A4D
Routine operation: The DISK
routine checks to see if
anything follows the command;
if not the error channel is read
and displayed. If there is text
after the command (which
must start with the quotes
character) the text is read in
and sent in the open
command. Before either of
these two operations are
actioned, the current file is
closed.
180
1340
:~5o
1360
1370
1390
139C
1400
1410
1420
1430
1440
1450
1460
1470
1480
1490
1500
1510
1520
1530
1540
1550
1560
1570
1580
1590
1600
1610
1620
1630
JSR IFFB7 : GET STATUS
9NE CATL13 ;STAT'JS ERROR
JSR tFFCF i INPUT
STA $57+1 :STCR£ IT
JSR $FFB7 ; SET STATUS
8NE CATL13 ;STATUS ERROR
LDY $B7 ; SET COUNTER
DEY ;30 NEXT
CATL05 BNE CATL04
STY $87 ;SET $B7 TC ZERO
CATL06 JSR $FFCF ; INPUT
PHA ; STORE IT
JSR $FFB7 ;5ET STATUS
TAX ; STORE TO X
PLA ; GET INPUT CHAR
CPX MOO iWAS THERE AN ERROR?
BNE CATL13 ; YES
LDY IB7 j GET LENGTH
CPY M50 ;T00 LONG?
BCS CATL13 ;YES, ERROR
STA $0200. Y i STORE CHARACTER
TAX
BEQ CATL07 ; END OF LINE
INC $B7 ;D0 NEXT CHAR
BNE CATL06 :ALHAYS
■
CATL07 JSR IFFCC ; RESET DEFAULT 10
LDX $9F
CPX M03
BEG CATL0B
LDX $9E
DISK
1000
1010
1020
1030
1040
1060
1070
1080
1090
1100
1110
1120
1130
1140
1150
1160
1170
I • Oft
I I OA
1210
4
DISK JSR $0079 | CHECK FOR BLANK
BEQ DISK01 : AFTER COMMAND.
JHP DISK04
DISK01 LDA MOO ; IF BLANK, READ
STA *B7 ; ERROR MESSAGE
JSR FOPEN ; OPEN A FILE
LDA MOD ; PRINT {RETURN >
JSR $FFD2
LDA M12 ; PRINT (REVERSE 0N>
JSR $FFD2
LDX $86
JSR $FFC6 ; SET FILE TO INPUT
DISK02 JSR $FFCF ; INPUT
PHA
LDA $90 ; CHECK STATUS
BNE DISK03
PLA
JSR $FFD2 j
JMP DISK02
DISK03 PLA
LDA $B8
STA $49
JSR *E1CC : CLOSE FILE
PRINT CHARACTER
AND NEXT
1640 JSR $FFC9 jSET OUTPUT DEVICE
1650 CATL08 LDX $57
1660 LDA $57*1
1670 JSR $BDCD ;PRINT FILE LENGTH
1680 LDA M20 ; SPACE CHAR
1690 JSR $FFD2 ;PRINT IT
1700 LDY MOO
1710 CATL09 LDA $0200, Y : GET CHAR
1720 BEQ CATL10 ; END OF LINE
1730 JSR $FFD2 j PRINT CHAR
1740 !NY
1750 BNE CATL09 ;D0 NEXT LINE
1760 CATL10 LDA MOD ; CARRIAGE RETURN
1770 JSR $FFD2 ;PRINT IT
1780 JSR $FFCC ; RESET DEFAULT 10
1790 JSR $FFE1 ;ST0P KEY?
1800 BEQ CATL13 ; YES
1810 JSR $FFE4 :GET KEY
1820 CMP M20 ; SPACE?
1830 BNE CATL12 ;N0
1840 CATL11 JSR $FFE4 ; GET KEY
1850 BEQ CATL11 ;N0 KEY
1B60 CATL12 LDY M02
1870 BNE CATL05 :D0 NEXT LINE
1880 CATL13 JSR IFFCC ; RESET DEFAULT 10
1890 LDA $BB ; GET FILE NUMBER
1900 JSR $FFC3 ; CLOSE FILE
1910 JSR DISK01
1920 JMP $A474 ; JUMP TO READY VIA ERROR
1930 QPDIR .BYT '$0' ; FILE OPEN NAME
1940 .END ■
1230
1240
i itr
1260
127C
1280
129C
1300
1310
1320
1330
1340
1350
LDA #$92
JSR $FFD2
LDA MCE
JSR $FFD2
LDA MOO
JMP IFFCS
PRINT 'REVERSE OFF;
PRINT (RETURN:
:np'j t tc kybd
FOPEN JSR &ETFN0 ; FIND FREE FILE NO.
STA 188
LDA M0F ; SECONDARY ADDRESS
STA $B9
LDA #$08 i DEVICE NUMBER
Vk $9A
1360 JHP $E1C1 ; OPEN
1370
13B0
1390
1400
1410
■440
145C
1460
:
&ETFN0 LDA #«0F ; CHECK TABLE OF
5ETN1 LDX $98 ; FILE NUMBERS FDR
CPX #$00 ; A FREE ONE
BEQ 5ETN4 : HAS BEEN FOUND
GETN2 CMP $0258. X
BNE GETN3
SEC
SBC M01
JMP GETN1
SETN3 DEX : TRY NEXT NUMBER
c
—
—
:480
1490
1500
1510
1 « 4 V
1530
1540
1550
1560
1570
8NE 5ETN2
GETN4 RTS
or mm
DISK04 CMP i$22 ; CHECK
BEG DISK05 | IN QUOTES
JHP IflFOa : SYNTAX ERROR
DISK05 LDA f== ; CLOSE CURRENT
STA $49 | DISK FILE
JSR tElCC
JSR $AD9E ; GET TEXT IN QUOTES
JSR «56A:
1590 LDX $22 : STRING ADDRESS AT
1400 STX $8B ; ($22)
1610 LDY $23
•620 STY $BC
1630 DISK07 STA $B7 : SET LENGTH
!64C JSR FOPEN ; OPEN FILE
I65C LDA MOD
1660 JSR $FFD2 : PRINT < RETURN)
1670 RTS : EXIT DISK
1680 .VIZ
JXEC
1000 EXEC JSR DPARS ;GET FILE PARAHETERS
1010 JSR GETOPN ;OPEN FILE
1020 LDA l$93 : CLEAR SCREEN
1030 JSR $FFD2
1040 LDA $0300 ; STORE OFF ERROR LINK
I0S0 STA EXECER
1060 LDA $0301
1070 STA EXECERM
108C LDA $0302 ; STORE OFF HARH START
1090 STA EXECST
1100 LDA $0303
1110 STA EXECST+1
1120 LDA KNERGRT ;SET 'RESET INPUT'
1130 STA $032C ; TO RTS
1140 LDA IMCRGRT
1150 STA $032D
1160 LDA KEXEC06 ;SET ERROR VECTOR "
1170 STA $0300
1190 LDA DEXEC06
1190 STA $0301
1200 LDA KEXEC02 ;SET HARH START
1210 STA $0302
1220 LDA DEXEC02
1230 STA $0303
1240 EXEC02 LDX EXECNO
1250 JSR $FFC6 {SET INPUT
1260 LDX 124 jBOTTOH
1270 LDY MOO ; LEFT
1280 CLC
1290 JSR $FFF0 ; OF SCREEN
1300 LDX MOO
1310 EXEC03 JSR $FFCF jGET BYTE
1320 PHA
1330 LDA $90 ; CHECK STATUS
1340 BNE EXEC05
1350 PLA
1360 CUP MOD ; CARRIAGE RETURN?
1370 BE9 EXEC04
1380 STA $0200, X
1390 INX
1400 JSR $FFD2 :PRINT CHAR
1410 JHP EXEC03
1420 EXEC04 LDA MOO
1430 STA $0200,1
1440 LDA M01
1450 STA $C6
1460 LDA MOD
M70 JSR $FFD2
1480 LDX MOO s SET KEYBOARD AS INPUT
1490 JSR $FFC6
1500 LDX MFF
1510 LDY M01
1520 JHP $A486 ;£X£C IT
1530 EXEC05 JSR EXEC07 : RESET VECTORS
1540 JSR DISK01 jDISPLAY DISK ERROR
1550 JHP $A474 ;EXIT TO READY
1560 EXEC06 BCC EXEC02
1570
1580
1590
1600
1610
1620
TXA ;SAVE ERROR NUMBER
PUfl
JSR EXEC07 ; RESET VECTORS
PLA ; RESTORE ERROR NUMBER
TAX
JMP ($0300) ;SEND ERROR
1630 EXEC07 LDA M2F ; RESTORE
'RESET DEFAULT 10'
1640 STA $032C
1650 LDA MF3
1660- STA $032D
1670 LDA EXECER ; RESET ERROR LINK
1680 STA $0300
1690 LDA EXECER*!
1700 STA $0301
1710 LDA EXECST ; RESET HARM START
1720 STA $0302
1730 LDA EXECST+1
1740 STA $0303
1750 LDX EXECNO
1760 JSR $FFC3 ;CLDS£ FILE
1770 RTS
1780 EXECST .NOR 0
1790 EXECER .NOR 0
1800 EXECNO .BYT 0
181C .END
EXEC
Abbreviated entry: E(shift)X
Affected Basic abbreviations:
EXP - EXP
Token: Hex $EE,$OD, Decimal
238,13
Modes: Direct and program
Recommended mode: Direct
only
Purpose: To EXECute a text file
stored on disk. This command
works in conjunction with GET
and PUT.
Syntax: EXEC filename,d -
where d is the device number
(disk only).
Errors: Illegal device - if the
device number specified is less
than eight.
Missing filename - if a null
filename is specified
File not found - if the file
does not exist
Device not present - if no
disk drive is connected
Too many files - if 10 files
are already open
Disk errors - at the end, the
disk error channel is read and
displayed.
Use: EXEC can be used in
several different ways. The
main one is to set up function
keys when first powered up.
For example enter the
program:
10 CTL(„5,0,0,1)
20 KEY1,"CATALOG"+CHR$
(13)
30 KEY2/'DISK"+CHR$(13)
40 KEY3,"LIST'+CHR$(13)
50 KEY4,"RUN"*CHR$(13)
60 KEY5."OLD"+CHR$<13)
70 KEY6,"PEEK("
80 KEY7,"RENUMBER"
90 KEY8,"FIND"
100 PRINT CTL(12,12„„1)
"FUNCTION KEYS DEFINED"
Use the PUT command to write
this to a disk file: PUT"FK",8
When powered up, type
EXEC"FK",8 and the com-
mands will be carried out and
your function keys will be
defined.
Other uses could be a string
of change commands to a
program.
Routine entry point: $8CCE
Routine operation: The
filename and device number
are read in and the file is
opened. Each line is read into
the input buffer until carriage
return is found. It is then
tokenised, and executed until
the file is complete or an
operating error occurs.
Abbreviated entry: M(shift)E
Affected Basic abbreviations:
None
Token: Hex $EE,$12, Decimal
238,18
Modes: Direct and program
Recommended mode: Direct
To merge a Basic
;ram from disk into the
rent Basic program in
Syntax: MERGE filename^ -
where d is the device number
(disk only).
Errors: Illegal device - if the
device number specified is less
than eight.
Missing filename - if a null
filename is specified.
File not found - if the file
does not exist.
Device not present - if no disk
drive is connected.
File open error - if 10 files
Disk errors - at the end, the
disk error channel is read and
displayed.
Use: Merge is used to combine
two Basic programs in memory.
Each line of the program on
disk is read in until the zero
byte is reached, and stored in
the input buffer. The Basic
routine to enter a line is then
called and the line is entered at
the correct place. Note: If a line
number of the program to
in
1000 MERGE JSR DPfiRS | GET FILE PARAMETERS
1010 LDfi KMRGHES | DISPLAY MERGE MESSAGE
1020 USi DHRKfl
1030 JSR IAB1E
1040 JSR $F5C1 ; DISPLAY FILENAME
1050 LDA $0302 : SAVE BASIC MARK START
106Q STA "ERGST ; LINK
:070 LDA $0303
1080 STA MERGSTM
I09C LDA »$0E : FIND FILE NUMBER
1100 JSR GETN!
K10 STA $Be
1120 STA FILENQ
1130 LDA i$00
1140 STA $B?
• •v
1
1140
I i Ifi
1 • •' V
1180
two
1200
1210
1220
1230
1240
:2S0
1260
1270
128C
4 hqa
1310
1320
133C
1340
1350
1360
1370
1380
'390
1400
1410
1420
1430
1440
JSR $FFC0 : OPEN FILE
LDX FILENO
JSR $FFC6 ; SET FILE TC INPUT
LDA KHERGRT
STA $C32C
LDA DHERGRT : SET ' RESE T INPUT'
S T A $032D i TO A RTS
LDA KRER604
STA $0302
LDA DNERG04 : SET 9AS!C MAR!- START
STA $0303 I T 2 MERG04
JSR $FFCF ; INPUT 2 BYTE LOAD
JSR $FFCF ; ADDRESS
MER502 JSR $FFCF ; INP'JT NEXT LINE
STA $!4 : POINTERS AND
JSR $FFCF : CHECK FOR ZERO
STA $15 : (END OF BASIC MOM)
3RA $14
BE9 *ERE?5
LDA $90 : CHECK STATUS
BNE MER6C5
JSP $FFCF : INPUT LINE NUMBER
S'A $14 ; AND STORE IN $14 i $15
JSR $FFCF
STA $1!
LDY l$00
«RG03 JSR $FFCF ; INP'JT LINE AND
STA $0200, Y : STORE IN INPUT
LDX $C5 ; BUFFER
CPX 163
1450 BEQ MERG05
1460
I NY
1480
1490
1500
1510
1520
1530
1540
1550
1560
END 2 C LINE" NC.
*$00
BNE MERG03
TYA j YES
CLC
ADC l$04
STA $0B
LDA $90 ; CHECK STATUS
BNE MERG05
LDY $0B
JHP $A4A4 ; MERGE LINE
1570 MERG04 JHP MER602 ; DO NEXT LINE
1580 MERG05 LDA HERGST : RESET BASIC WARM
1590 STA $0302 ; START
LDA MERGST+1
STA $0303
AND 'RESET DEFAULT 1/0'
1600
1610
1620
1630
1640
1650
1660
1670
1680
1690
1700
CLOSE FILE
RESET DEFAULT 1/0
DISPLAY ERROR CHANNEL
JUMP TO READY
LDA *$2F ;
STA $032C
LDA t$F3
STA $0320
LDA FILENO
JSR $FFC3
JSR $FFCC
JSR DISK01
JHP $A474
1710 MERGRT RTS
1720 FILENO .BYT 0
1730 MRGMES .BYT $91, 'MERGING: ',$00
17.40 HERGST .WOR 0
1750 ;
1760 ;6ET PARAMETERS AND CHECK FOR
1770 i ILLEGAL DEVICE. USED BY DISK
17B0 : ONLY C0HHANDS.
1790 :
1900 DPARS JSR $E1D4 ;GET FILENAME ETC
1810 LDA $BA ; IS DEVICE DISK?
1820 CMP «$08
1830 BCC PARERR ;N0
1840 LDA $87 ;FILENAHE LEN6TH
1S50 BEQ PARER1 ; ZERO
1860 RTS
1870 PARERR LDX l$09 ; ILLEGAL DEVICE
1880 .BYT $2C
1890 PARER1 LDX «0S :MISSING FILENAME
1900 JMP $A437 : SEND ERROR
existing line number, the
MERC Ed line will replace it-
Routine entry point: $97B0
Routine operation: The
filename and device are read in
and checked for missing
filename and illegal device. If
both checks are OK, the file is
opened and the message
MERGING is displayed. Each
line is then read into the input
buffer and entered using the
Basic routine to do so. When
the file is completed, it is closed
and the disk error channel is
read and displayed.
OLD
Abbreviated entry: 0(shift)L
Affected Bask abbreviations:
None
Token: Hex $EE, $13, Decimal
238.19
Modes: Direct and program
Recommended mode: Direct
only {there should be no
program in memory)
Purpose: To restore a Basic
program after a NEW has been
performed.
Syntax: OLD
Errors: None
Use: OLD can be used if the
program in memory has been
wiped out using the NEW
command. OLD will not work if
DELETE was used to remove the
whole program or if a variable
has been declared since the
NEW. (In most cases, syntax
error will create a variable e.g.
LI instead of L(shift}l will create
the variable LI and give syntax
error instead of trying to list the
program).
Routine entry point: $9885
Routing operation: The first
line is scanned until the end
and the pointer to the next line
is restored. The program is then
re-chained and variable
pointers are set.
PUT
Abbreviated entry: P(Shift)U
Affected Basic abbreviations:
None
Token: Hex $EE,$15, Decimal
238,21
Modes: Direct and program
Recommended mode: Direct
Purpose: To list a Basic
program to a disk file without
line numbers
Syntax: PUT filename,d -
where d is the device number
(disk only)
Errors: Illegal device - if the
device number specified is less
than eight.
Missing filename - if a null
filename is specified.
1000 OLD LDA $2B : FIND THE END OF
1010
1020
1030
1040
1050
1060
1070
CLC ; THE FIRST LINE
ADC M04
SET POINTER TO AFTER
LINE NUMBER
STA «57 ;
LDA $2B ;
ADC 1100
STA 157+1
LDY #$00
1090 0LD01 LDA (157), Y ; SEARCH LINE
1090 BED 0LD02 | IF ZERO. END OF LINE
1100 LDA $57
1110 CLC
1120 ADC HOI ! INCREMENT POINTER
1130
1140
1130
1160
1170
I18C
1190
1200
1210
:220
1240
1260
1270
1290
STA $5?
LDA $57+1
ADC t$00
STA $57+1
JHP 0LD01
0LD02 LDA $57 : END OF LINE
LDY l$00 : FOUND
CLC
adc *$c:
STA <$2B),Y : SET NEXT LINE
INY : POINTER
LDA 457+1
ADC HOC
STA (125), Y
JMP RESVAF, ; SET VARIABLE POINTERS
.END
1000
1010
1020
1030
1040
1050
1060
I V i V
1080
1090
1100
1110
1120
1130
1140
1150
1160
1170
1180
1190
1200
1210
1220
1230
1240
- — - ■
1270
1280
1290
1300
1310
1320
1330
1340
135C
1360
1370
PUT JSR DPARS ; GET FILENAME PARAMETERS
JSR PUTHES j'NRITINS..'
JSR PUTOPN iDPEN FILE
JSR PUTOUT ;SET OUTPUT
JSR $A533 ; RE-CHAIN PROGRAM
LDA $2B :SET PROS POINTER
STA $5F :T0 START OF PROGRAM
LDA I2C
STA 160
PUT02 LDY #$00 ;END OF PROGRAM?
LDA ($5F),Y
INY
ORA t$5F),Y
BEQ PL'TEND ;YES
LDY #$04 iPOINT TO FIRST CHAR
PUT03 LDA ($5F),Y
BEQ PUTNL : END OF LINE
BHI PUTTK :PRINT TOKEN
CMP l$22 ; IS IT A QUOTE?
BEQ PUTQT ;YES DO IT
PUT04 JSR $FFD2 : PRINT CHAR
INY ;SET TO NEXT
BNE PUT03 ;D0 NEXT (ALWAYS)
PUTEND LDA HQ" CARRIAGE RETURN
JSR $FFD2 : PRINT IT
JSR PL'TCLS : CLOSE C ILE
JMP DISKOl : DISPLAY DISK MESSAGE
PUTNL LDY MOO
LDA ($5F),Y ;SET LINK LC
TAX
INY
LDA f$5F),Y ;6ET LINK HI
STA $60 : STORE AS NEXT POINTER
STX $5F
LDA HOD : CARRIAGE RETURN
JSR $FFD2 .PRINT IT
LDA $90 : STATUS
1380 BNE PUTEND ;EXI r IF BAD
1390 JMP PUT02
1400 ;
1410 PUTQT JSR. $FFD2 .PRINT IT
1420 INY ; NEXT BYTE
1430 LDA !$5Ff.Y ;GET BYTE
1440 BEQ PUTNL ; END OF LINE
1450 CMP «$22 ; QUOTE?
1460 BNE PUTQT ;N0
1470 BEQ PUT04 j OUTPUT AND DO NEXT
1480 :
1490 PUTTK CMP t$EE ;MY TOKEN?
1500 BEQ PUTTK1 ;YES
1510 JSR PRIN09 : TOKEN TO TEXT
1520 BMI PUTTK2 ; ALWAYS
1530 PUTTK1 JSR PRIN03 ; CONVERT TO
TEXT AND PRINT
1540 PUTTK2 AND t$7F ;MASK TOP BIT
1550 LDY $49 ; RESTORE .Y
1560 JMP PUT04 iSEND AND DO NEXT
1570 ;
1590 PUTOUT LDX $B8 jFILE NUMBER
1590 JSR $FFC9 ;SET OUTPUT
1600- BCS PUT0P3 j ERROR
1610 RTS
1620 PUTOPN LDY »$00
1630 PUT0P1 LDA ($BB).Y ;GET NAME BYTE
1640 STA $02Q0.Y ;STORE IT
1650 INY
1660 CPY $B7 ; END OF NAME?
1670 BNE PUT0P1 ; NOT YET
1680 LDX #$00
1690 PUT0P2 LDA PUTSN.X ; GET BYTE
1700 STA $0200.Y ;STORE IT
1710 INX
1720 INY
1730 CPX l$04 ; DONE?
1740 BNE PUT0P2 ;NOT YET
1750 LDA l$61
1760 STA $B9
Device not present - if no disk
drive is connected.
Too many files - if 10 files
are already open.
Disk errors - at the end, the
disk error channel is read and
displayed.
Use: PUT is used in
conjunction with GET to allow
the editing of Commodore
assembler source files. PUT can
also be used as an alternative
save method for Basic
programs so that they may be
run by using the EXEC
command. See EXEC for an
example of use.
Routine entry point: $997A
Routine operation: The
filename is read along with the
device number and checks are
made for missing filename and
illegal device number. If these
are OK, the file is then opened
and each line is output using
the print tokens routine to the
file. At the end of each line, a
carriage return is sent and an
extra carriage return inserted at
the end of the file. The file is
then closed and the disk error
channel is read and displayed.
TYPE
Abbreviated entry: Ti shift lY
Affected Baste abbreviations:
None
token: Hex $EE,$1B, Decimal
238,27
Modes: Direct and program
Recommended mode: Direct
Purpose: To display a text file
stored on disk to the screen
Syntax: TYPE filename.d -
where d is the device number
(disk only)
Errors: Illegal device - if the
device number specified is less
than eight.
Missing filename - if a null
filename is specified.
File not found - if the file
does not exist.
Device not present - if
disk drive is connected.
Too many files - if 10 files
are already open.
Disk errors - at the end, the
disk error channel is read and
displayed.
Use: TYPE can be used to look
at sequential files stored on
disk. This can be used rather
than GET if you wish to check a
certain line in the file is as the
file is not loaded in but directly
displayed from the disk.
Easyscript text files could be
just as easily displayed using
this routine.
Routine entry: $9F50
Routine operation: The
filename is read along with the
no
67
c
1790
1800
1810
1820
1830
1840
1850
I860
1870
1880
1890
1900
1910
1920
1930
1940
1950
* D /iP
197C
1980
1990
LDA MOO
STft $0200, Y
LDY H02
STft IBB ; POINTER LO
STY «BC [POINTER HI
LDA HOE
JSR SETN1 ;6ET FILE NUMBER
STA 188 (FILE!
STA EXECNO : FDR EXEC
JSR $FFCO ;OPEN
BCS PUTQP3 ; ERROR
RTS
PUT0P3 JUP JE0F9 ; OUTPUT ERROR
PUTS* . BY T ',8,11'
PUTCLS Lil K03
JSR *FFC? : OUTPUT TO SCREEN
LDX HOC
JSR *FFC6 ; INPUT FRQfl KEYBOARD
IDA EXECNO
JMP SFFC3 i CLOSE FILE ^
:ooo ptmca lda kphebss i
POINTER TC MESSAGE
2010 LDY DP1ESSE
2020 JSR MB1E ; PRINT MESSAGE
2030 JMP »F5C1 i PRINT FILENAME
2040 PMESSS .BYT 'WRITING ',$00
2050 .END
1000 TYPE JSR DPflRS ; GET FILE DETAILS
1010
1020
JSR GETQPN ;OPEN FILE
JSR GETIN ;SET INPUT
1030 TYPE2 JSR IFFCF ; INPUT
1040 LDX *90 ;GET STATUS
1050 JSR IFFD2 ; PRINT BYTE
1060 JSR SFFE1 ;STOP KEY?
1070 BEG TYPE1 ;YES
1080 TXA
1090 BEQ TYPE2 ;N0 ERROR
1100 TYPE1 JMP PUTEND ; DONE
1110 .END
BYTE
device number and checks are
made for missing filename and
illegal device number. If these
are OK, the file is then opened
and each character is read in
and displayed until the end of
file or the stop key is pressed.
At this point, the file is closed,
the disk error channel is read
and the routine exits.
Because of the size of this
article it was impossible to
print the Basic Loader for
the machine code. If you
would like a copy of the
loader then please send a
large stamped self
addressed envelope to
Better Basic Loader, Your
Commodore, 1 Golden
Square, London W1R 3AB.
COMMODORE 64 OWNERS
The Ultimate Reference Book
Programming The Commodore 64 by
Raeto West
Comprehensive and readable teaching and
reference book on the 64 T.-kes over where
Commodore - manual leaves off; much larger
t»an most computet books Programs available
separately on disk o> on two tapes save
Keying m tune.
Topics include course in BASIC programming,
now BASK: works. Extending BASIC, machine
language course. BOM guide and memory
maps etc . through coverage ol graphics and
sound, tape and d«sk handling hardware
Best of a» his books required (e*dmg J or
all those who wish to make full use of their
64*' - Jack Cohen
Programming The Commodore 64 tR West). C 14 90 in UK Europe BlOpages
6H' «9V' paperback 17 chapters » appendices ISBN O 9507650 2 3.
Published by Level Ltd ICompufer Publications). •* O Bo* -38. Hampstead.
London NW3 IBM Programming the Commodore 64. Disk (6 90 line VAT)
ISBN O 950 7650 3 1 Programming the Commodore 64 Tapes E9 90 imc
VATl ISBN O 9507650 4 X Programming the VIC (West). £10 90 602
pages. ISBN O 9507650 1 5 "Pecked with virtually a" the information you
ere likely to need'' J Goldsmith Programming the PET'CBM (West), f 18 90
512 pages ISBN O 9507650 O 7 "Unauesnonably the most
comprehensive reference I have * rn" Jim Butterlield
MAIL ORDtft FORM
Send orders and make cheoues payable to Level Ltd Computer
Publ.eat.onsl. c o B.bUos D.str.but*n. Star Road Partridge Green. Nr
Horsham. West Sussei RM13 8LO
Quantity Title
Total
NAWf
Programming the Commodore 64 (Westi
Programming The Commodore 64 - Disk
Programming The Commodore 64 - Tapes
P-ogremmmg The Vic (Westi
Prog.amm.ng The PET'CBM I West.
f14 90-
C8 90-*
(9 90-*
f 10.90"
f 18 90*
'Aod CI each postage
• 'Add 50p each postage
TOTAL PAYMENT
AODRESS.
1^
I ™ 2 ™J$^
EVER HAD A LOADING PROBLEM?
Then send oil lor WIZARD'S TAPE HEAD ALIGNMENT KIT - No one
should be without one!
By lar the most common cause ot loading failure is bad alignment ol
your tape heads All cassette units can become out ol alignmen witn
use and may have been Incorrect Irom the start Our alignment kit win
allow you to precisely set up your tape heads lor ihe best possible
loading conditions In many cases this will make a remarkable
difference m loading reliability especially ol last loading programs
Our kit comprises
(1) A precision recorded cassette containing a sophisticated test
program (2) A special adjustment screwdriver (3| A direction
indicator. (41 A turning meter (5) A detailed instruction booklet with
diagrams (6) A Loading Doctor - to help you diagnose any loading
problems All ol this tor only £6.95!"
COPY KING
• Revolutionary new copier lor FAST LOADING programs.
• Striped loaders, picture loaders, etc.. handled with ease
• Back-up copies are made on blank TAPES at last speed llaster than disc!)
• Extremely easy to use - no technical knowledge required
• No additional hardware and no second cassette recorder are required
•We believe this 100 o/o machinecode copier is unrivalled in performance
• Buy the market leader Great value at £7 95
HALF PRICE SPECIAL THIS MONTH!!!
Copycat and Lightning Load together lor only £5 95 Usually £5.95 each
COPYCAT
• Our highly popular back-up copier lor Commodore/standard rate
loading systems
•Thousands sold in the last year
• Makes back-up copies ol Commodore/siandard rate software onto blank
tapes
•Wizard sound effects Cassette magic sense
LIGHTNING LOAD II
• Converts almost all your slow loading games'programs into SUPERFAST
TURBO loading versions on tape.
• The tedious wait for loading is over when you buy this excellent program
Overseas orders welcome Europeans please add 50p Outside E''«>pe
add £i 00 UK postage free Rapid dispatch ol orders Cheques'POs to
WIZARD SOFTWARE (DEPT. A)
59 THE MARLES. EXMOUTH. DEVON EXB 4NE
BLANK DISKS
Top Quality 51" Bulk Packed Disks
Supplied in 1 0's with a FREE Plastic Library Case, Labels etc.
Single Sided Double Sided
(40/80 Track) (40/80 Track)
10 -5T Disks
(With a FREE Plastic g*4*\ nr a C
Library Case) £13,95 £17*95
50 -5F Disks
(With a FREE Perspex
Storage Box)
£59.95 £79.95
* LIFETIME WARRANTY ★
* FREE FAST DELIVERY ★
All prices, are inclusive of VAT.
Delivery FREE throughout the U.K.
3" & 3i" Disks also available
Bulk Orders, Trade Enquiries & Educational Enquiries Welcome
Please Send Cheques/Postal Orders to:-
SJB DISKS LIMITED (Dept YC )
mm 1 1 Oundle Drive, Nottingham, NG8 1 BN i
' ' Telephone (0602) 78231 0 B
Carry Marshall
explains how a
computer can be used
to interpret images.
PR
IN MANY AREAS, COMP-
ulers are used to help interpret
images such as thai in Figure 1.
The illustration shows a part of
the sky as seen from a powerful
telescope, and computers are
used to process pictures of this
kind to make sense of them in
terms of the galaxies and
clusters of objects appearing in
them. A similar process takes
place in giving a robot the cap-
ability to see. To be able to
recognise the items that it is to
assemble, for instance, an
industrial robot must be able to
interpret the pattern of darker
and lighter dots representing
its field of vision as presented
by a video camera. In both
cases, the computer is running
a program that enables it to
bring some kind of order to an
apparently chaotic scene.
There is another area where
computers can be used to help
interpret images, and this is in
archaeology. Often on a site
excavated by archaeologists,
the only evidence remaining of
a building that once occupied
the site is a pattern of holes in
the ground. After the building
itself has decayed, the holes in
which its supporting timbers
were placed (known as post-
holes) remain. Even for a single
building, which will obviously
have a rectangular plan, the
plan itself is often none too
clear. When many buildings
have occupied a site at
different times with some built
over the same ground as
earlier, vanished, ones, the
overlapping patterns of holes
can be chaotic. Computers can
be used to good effect in trying
to reconstruct the plans of the
houses that once occupied a
site.
This month's project is to
reconstruct the plan of a
building from an irregular but
more-or-less rectangular
pattern of post-holes such as
that in Figure 2 by super-
imposing an outline of the plan
on it, as shown in Figure 3.
Figure 2 A pattern of post-holes
The Solution
The first thing the program
must do is to plot the pattern of
post-holes as in Figure 2. This
can be done by reading the
positions of the post-holes
from DATA statements and
then plotting a block at each
position to represent a post-
hole. The positions will be
needed again later in finding
the plan of the house, so it is
worth storing them in arrays as
they are read. Using arrays
named XP and YP to hold,
respectively, the column and
row positions on the screen for
the post-holes, and making use
of our point-plotting sub-
routine, which begins with line
1000, the program starts as:
10 DIM XP(12), YP(12), X(12),
Y(12): NP=12
20 GOSUB 500: REM PREPARE
HI-RES SCREEN
30 FOR J=1 TO 12
40 READ C, R: XP(J)=C: YP<J)=R
Figure 4: Good and bad approximation to the main axis for a
pattern of post-holes.
50 GOSUB 1000: C=C+1 :
GOSUB 1000: REM PLOT
POINT
60 R=R+1: GOSUB 1000: OC-1:
GOSUB 1000
70 NEXT J
80 DATA 46, 55, 62, 62, 99, 77,
120, 90, 109, 105, 106,118
90 DATA 109, 135, 82, 121, 49,
113, 35,110, 38, 93.43, 79
The next step is to find the
main axis of the house, by
doing this we shall find the
directions of all the walls of the
house. The longer walls will be
parallel to the axis and the
shorter walls must be at right
angles to it. Figure 4 shows the
idea behind the method for
finding the main axis. It shows a
line that goes close to the posi-
tions of all the post-holes and a
second line that obviously goes
much farther from most of
them. The first represents a
good approximation to the
main axis, and the second a
poor one. We shall use a well-
known mathematical method
for finding the line passing
closest to a set of points, and
this will give us the main axis of
the house. The method is that
of finding the line giving the
'best least squares fit' to a set of
points.
We will write the program
so that it waits until a key is
pressed before going on to
calculate the position of the
main axis and to display it using
our line-drawing subroutine
that starts at line 2000. This gives
the next section of the program
as:
100 GET C$: IF C$=" " THEN
110 FOR J=1 TO 12: X(J)=XP(J):
Y(J)-YP(J): NEXT J
120 GOSUB 3000: REM FIND
AND DRAW LINE
The subroutine that does all the
work is:
2999 REM FIND AND DRAW
LINE
3000 SX=0: SY=0: XX=0: XY=0
3010 FOR K=1 TO NP
Program: Post-Holes
10 DIM XP{12I,YP(12),X(12),
Y(12),E(12I,C(12): NP=12
20 60SUB 500: REM PREPARE
HI-RES SCREEN
30 FOR J=l TO 12
40 READ C, R: XP(J)=C
: YP(J)=R
50 G0SUB 1000: OC+1
: 60SUB 1000: REH PLOT
POINT
60 R=R+1: S0SUB 1000: C=C-1
: 60SUB 1000
70 NEXT J
BO DATA 46,55,62,62,99,77,
120,90,109,105, 106, 11B
90 DATA 109,135,82,121,49,
113,35,110,38,93,43,79
100 BET CI: IF C«=" THEN 60
TO 100
110 FOR J»l TO 12: X(J)=XP(J)
: Y(J)=YP(J): NEXT J
120 60SUB 3000: REH FIND AND
DRAW LINE
130 GET C»: IF C$=" THEN GO
TO 130
140 REH FIND DISTANCE FROH
AXIS
150 HAX=0: HIN=0
160 FOR K=l TO 12
170 E(K)=YP(K)-H«XP(K)-CC
1B0 IF E(K)>NAX THEN HAX=E(K)
190 IF EtKXHIN THEN HIN=E(KJ
200 NEXT K
210 REN CLASSIFY EACH POST-H
OLE
220 FOR K«l TO 12
230 IF E(K)>0.7IHAX THEN C(K
60T0 300
240 IF E(KX0.7IMIN THEN C(K
)=2: 6DT0 300
250 IF ABS(H)>1 THEN SOTO 2B0
260 IF XP(K)>SX/12 THEN C(K>
=3: SOTO 300
270 IF XPIKXSX/12 THEN C(K)
=4: GOTO 300
280 IF YPIKDSY/12 THEN CIK)
«3
290 IF YPIKXSY/12 THEN C(K>
=4
300 NEXT K
310 FOR 0=1 TO 4
320 NP=0
330 FOR JM TO 12
340 IF C(J}=Q THEN NP=NP+1
: XJNP)=XP(J): Y(NP)=YP(J)
350 NEXT J
360 60SUB 3000
370 NEXT Q
380 END
500 POKE 53272, PEEK (53272)
OR 8
510 POKE 53265, PEEK(53265}
OR 32
520 FOR 1=8192 TO 16192
: POKE I, 0: NEXT I
530 FOR 1=1024 TO 2023
: POKE I, 22: NEXT I
540 RETURN
1000 RQ=INT(R/8): CQ=INT(C/8:
1010 L=R AND 7
1020 BIW - (C AND 7)
1030 BYTE=B192+R0!320*C0I8+L
1040 POKE BYTE, PEEK (BYTE) 0
R 2 A BIT
1050 RETURN
2000 DX=X2-X1: DY=Y2-Y1
2010 IF DX=0 THEN 2070
2020 FOR C=X1 TO X2 STEP SGN
(DX)
2030 R=lNT(Yl+(C-Xl)tDY/DX)
2040 6QSUB 1000
2050 NEXT C
2060 RETURN
2070 C=X1
2080 FOR R=Y1 TO Y2 STEP SGN
(DY)
2090 GOSOB 1000
2100 NEXT R
2110 RETURN
2999 REH FIND AND DRAM LINE
3000 SX=0:SY=0:XX=0:XY=0
3010 FOR K=l TO NP
3020 SX=SX*X(K): SY=SY+Y(K)
3030 XX*XX*X(K)IX(K)
:XY=XY+X(K)tY(K) '
3040 NEXT K
3050 D'SXISX-NPtXX
3060 H=(SYtSX-NPtXY)/D
3070 CC=(SXIXY-SYtXX)/D
3080 Xl=200: X2*0
3090 FOR K=l TO NP
3100 IF XtKXXl THEN X1=X(K)
3110 IF X(K)>X2 THEN X2=X(K)
3120 NEXT K
3130 Y1=MX1+CC: Y2=HtX2+CC
3140 GOSUB 2O00: REH DRAW
LINE (XI, YD T0(X2,Y2)
3150 RETURN
3020 SX=SX+X{K): SY=SY+Y(K)
3030 XX = XX + X(K)*X(K):
XY=XY+X(K)*Y(K)
3040 NEXT K
3050 OSX*SX-NP*XX
3060 M=(SY-SX-NP*XY)/D
3070 CC=(SX-XY-SY«XX)/D
3080 X1=200: X2=0
3090 FOR K=1 TO NP
3100 IF X(K> < X1 THEN X>X(K)
3110 IF X(K) >X2THENX2=X(K)
3120 NEXT K
3130 Y1=M-X1+CC: Y2=M*
X2+CC
3140 GOSUB 2000: REM DRAW
LINE (XI, Y1) TO (X2, Y2)
3150 RETURN
With the main axis of the
house plan located, we can
identify the post-holes that
belong to the long walls
because those on one long wall
will all be more or less the same
distance above it and those on
the other about the same
distance below it. The remain-
ing post-holes must belong to
the short walls and, broadly
speaking, those to the right of
the centre of the building will
be on one short wall and those
to the left on the other.
By introducing a code for
the walls of the plan, we can
use an array named C to hold a
code number for each point
and so record for each point
the wall to which it belongs.
The code is:
Wall
Long wall
Long wall 2
Short wall 1
Short wall 2
Number
1
2
3
4
Using this code, the assignment
C(1)+4 would mean that post-
hole 1 is on short wall 2.
The next program segment,
also written so as to be initiated
by pressing any key, is:
130 GET C$: IFC$=" " THEN
GOTO 130
140 REM FIND DISTANCES
FROM AXIS
150 MAX=0: MIN=0
160 FOR K=1 TO 12
170 E(K)=YPfK)-M*XP(K)-CC
180 IF E(K) > MAX THEN
MAX=E(K)
190 IF E(K) < MIN THEN
MIN=E(K)
200 NEXT K
210 REM CLASSIFY EACH
POST-HOLE
220 FOR K=1 TO 12
230 IF E(K) > 0.7*MAX THEN
C(K)=1: GOTO 300
240 IF E(K) < 0.7*MIN THEN
C(K)=2: GOTO 300
250IFABS(M}> 1 THEN GOTO
280
260 IF XP(K) > SX/12 THEN
C(K)=3: GOTO 300
270 IF XP(K) < SX/12 THEN
C(K>=4: GOTO 300
280 IF YP(K) > SY/12 THEN
C(K)=3
290 IF YP(K) < SY/12 THEN
C(K)=4
300 NEXT K
After this, not forgetting to
declare the arrays E and C, it
only remains to draw the lines
for each side of the building.
This can be done by using the
subroutine for finding and
drawing a line four times, once
each time for the points on
each wall. This is done by the
final section of the program,
which is:
310 FOR Q=1 TO 4
320 NP=0
330 FOR J-1 TO 12
340 IF C(J)=Q THEN NP=NP+1:
X(NP)=XP(J): Y(NP>=YP(J)
350 NEXT J
360 GOSUB 3000
370 NEXT Q
The complete program for
drawing the plan of a house
from an approximately
rectangular pattern of post-
holes is listed in Figure 5.
Remember that when it is run it
draws the pattern of post-holes
and then waits for you to press
a key before it draws the main
axis. Then it waits again for you
to press a key before it draws
the walls.
Further Developments
The way to investigate the
capabilities of this program is to
try it out with different sets of
data. Trying several sets will
give a feel for what is meant by
phrases such as 'more or less
rectangular' and 'more or tess
the same distance away'. If you
try changing the number 0.7 in
lines 230 and 240 at the same
time, you will find that you can
adapt the program to deal
successfully with any reason-
able data. The next step, of
course, is to generalise the
program so that it adapts itself
to the data it is given. I think
you will find that this program
shows a degree of 'intelli-
gence', and if you can make it
adapt itself to different
situations, you will have made
it more intelligent.
71
Runecaster delves into some
dungeons and dragons game s]
and faces danger and death.
New and Devious...
GLOBAL IS A RELATIVELY NEW NAME
in computer software and if the
company's first adventure game - The
Magician's Ball - is anything to go by it will
he worth watching out for in the future. It
is by no means perfect as there are several
anomalies apparent in playing it... but
nevertheless the presentation and the
command structure are good and
sufficiently different to make it worth
your attention.
The program is on cassette only and
will run on the C64 (or C128). A fast loader
is incorporated and the program will load
in just over four minutes. The screen
display is colourful and the text easily
read, with the graphic picture of your
location occupying a small rectangle in
the top left corner.
The graphics are not particularly
exciting but are clear and are 'drawn' very
rapidly. Occasional use of sprites adds
some movement that gives a little life to
the scenes. Unlike some games the
pictures, although simple are quite
different and easily give quick visual
recognition to one's location.
The main location description is to the
right o,f the picture and contains plenty of
information to build quite a fair mental
image of your surroundings. Visible exits
are indicated and input commands are
entered at the bottom of the screen.
The 12 line 'window' between the
description and the command line will
contain additional information on what is
seen at that location - creatures, objects
that can be carried and even what other
creatures are carrying!
Briefly, the storlyine is that an evil
magician has abducted a beautiful
princess from her father's side; you - Caro
- were there at the time and in a foolish
attempt to rescue the girl... got swept
away by the magician's magic as he
returned to his own domains. You are
now in the magician's realm and... on
your own!
Input commands may consist of
reasonably complex sentences and also
permit you to tell other characters what to
do. A very interesting feature of this
adventure is that you can swop
personalities and 'control' some of the
other characters you meet in your travels.
The normal 'save game' facilities are
actioned with 'saving' and 'loading' times
of just under two minutes but another
neat trick from Global is the 'Quicksave'
and Quickload'. These are implemented
by pressing the Commodore key and
either 'S' or 'V.
Ci)p itlagicunt's Pall
58,111 9
This 'save' option almost instant-
aneously stores your present position into
a protected area of memory. A very useful
command if you think youareabout tobe
killed or even to create a 'fall back'
position if you are not sure of your next
few moves.
Eurther 'user friendly' options exist in
the input command area - not only can
you delete an unwanted letter by using
the delete key in the normal manner but
you can delete the entire command with
SHIFT and CLR.
Pressing '(a)' repeats the last command
and keying the left arrow key (top left of
the keyboard) recalls the last command
for you to modify if desired. I think it is
facilities such as these that make Global
worth watching in the future. User
friendly games are worth cultivating!
The operating system may be user
friendly, the game is in many ways just
plain devious! All the clues are there but
you may have difficulty seeing the wood
for the trees. There are several 'red-
herring paths' and the number of objects
you can carry is not always as great as you
may wish - perhaps you should get
someone/something to carry them for
you!
Throughout your journey, you travel
to musical accompaniment from Tubular
Bells', this provides a pleasant interlude as
you sit back to ponder your next move.
There are the anomalies I mentioned
earlier but these do not alter the game
play in any way - they mainly appear as
various characters saying something that
has no useful or significant purpose!
There are also a number of situations
where you will have at one location, two
(or more) items that although different
are similar - a gold and an ornamental
key for instance. It is worth dropping the
one you do not want to use at another
location as the program sometimes finds it
difficult to understand what you want it to
do!
The Magician's Ball is good fun and
both novice and experienced adventurers
should find something in it to enjoy.
Old But Faster
Once upon a time there were no C64s or
C128s. I know that is difficult to believe
but it's true. There were PETs and Ataris
and TSR 80s and quite a number of
programs for them.
Amongst these there were also a
number of adventure games that closely
followed the general idea of Dungeons
and Dragons, with lots of monsters to
meet in battle and treasure to be found by
the bold and daring.
They caught the imagination of
thousands of home computer users in
America (the land of their origin) and
there were even competitions and
conventions where adventurers of like
mind could compete against the clock to
prove their prowess in the worlds of
dungeons and magical tombs.
One of the favourites was called The
72
Adventures
Temple of Apshai. At that time, with the
exception of the Atari, none of the home
computers had what we could call hi-res
graphics and as it was not written for the
Commodore machines anyway, the
conversion for the PET was sadly lacking.
The graphics showing the rooms and
corridors around your character, took an
age to be 'drawn' to the screen, the action
was slow, the response to your commands
(and there were plenty of options) was
painfully slow and last but not least the
keyboard buffer was not cleared.
This last 'fault' wasdiabolieal. because,
with the slow response to the input
commands (all single key) there was a
high probability that you would press one
or more keys several times trying to either
evade or attack a monster with the
consequence that your character would
still be striking at the monster long after it
had been slain!
Even a fairly recent conversion for the
C64 still exhibited many of these
shortcomings making the game tedious
dnd boring to play. All these half-hearted
attempts were really a great shame
because the original concept was worth
playing.
I am pleased to report that at long last,
a playable version has appeared for the
C64. This is a new (yet another!) inter-
pretation entirely, with far superior
graphics, faster playing all round, no
keyboard buffer problems and to cap it
all, not only The Temple of Apshai but also
on the same disc, the two additional
adventures that followed: Upper Reaches
of Apshai and the Curse of Ra'.
The Temple of Apshai Trilogy is
produced by Epyx Computer Software
(Impossible Mission, SummerGames etc.)
and is distributed in the UK by US Gold.
One other vital fact is thai the three-on-
one-disk will retail for only £9.95!
characters given a random rating (from 1-
18) for their six basic attributes: intel-
ligence, intuition, ego, strength, con-
stitution and dexterity, together with a
limited amount of silver pieces with which
to equip themselves.
You may enter a previously 'saved'
character from disk or you may enter the
attributes of a known character from
some other game. Or you may restore a
previous game 'saved' at any point within
Apshai.
Your character is 'named' and is your
own persona' within the confines of the
game. If you start from scratch then you
will have to buy the various pieces of
equipment you think you will need - from
the innkeeper.
This is an art in itself as you must learn
to haggle with him to get the best
bargains. Pay the asking price and you will
end up with very little equipment!
Choice of equipment is fairly
important. Various swords are on offer
but if you do not have a great deal of
strength then a two handed sword will tire
you quickly. A small shield may be very
effective if you have high 'dexterity'.
The status screen shown throughout
your adventures in Apshai shows wounds
and fatigue, the lower percentage of
wounds the nearer you are to death. The
lower percentage of fatigue the less
energy you have to fight or run away.
Wounds may be healed over the
passage of time or through the use of
'healing salves' or 'elixirs', the former may
be purchased from the innkeeper, the
latter can be found within the rooms and
corridors of Apshai.
Fatigue may be restored by moving
very slowly, resting or by firing arrows!
The heavier your equipment or treasure,
then the more fatigued you will become.
Having beaten the innkeeper down in
: — J _i I
magic arrow.
There are also a number of special
commands you may use, such as
examining a wall for secret doors,
opening doors, searching for (raps,
picking up treasures, listening for
monsters, talking to monsters, healing
yourself with salves or elixirs, checking
the inventory of your treasures or saving
the game or character for future use.
As you may now be beginning to
understand, the Temple of Apshv Trilogy
is a little more than a straight-forward
'monster bashing' adventure game. A
little thought is also required if you are to
last any length of time within its
dangerous environs.
The option of defining your own
character has got to be double edged. It is
all too easy to give your character 18
points for all attributes. This strikes too
close to, dare one say. . .cheating?
On the other hand, pressing
RUN/STOP RESTORE if the attributes
given to you by the innkeeper are
particularly poor does give you the
chance to improve on the random attri-
bute system. . .after all there are various
magical items to be found that will
increase some if not all of your vital
statistics!
Most levels of each realm have
between 50 and 60 different rooms, so
there is plenty to explore. Some monsters
are 'tied' to particular locations but there
are also plenty that wander around just
looking for the odd human.
If you choose the right realm and level
it is not too difficult to increase your
experience and treasure but venture
deeper and things become a little more
difficult!
Should the worst happen, then there is
still a chance thai all is not lost. If you
come lo an untimely end one of four
win icidii ivfi uniy &7. 7j:
If you have the slighlest inclination
towards monster bashing', then these
programs are for you. Even if you are only
barely interested then the Temple Trilogy
is worth considering, purely as being a
classic of ils type.
The instruction manual for the trilogy
k some 80 pages long and covers all the
isic rules for playing, together with a
ndvuig ueditMi me innkeeper uown in
price and purchased a sword, armour, a
shield, bow. arrows and a few healing
salves, you are ready to enter Apshai. You
have the choice of which realm toexplore
and at whal level.
Each realm has four levels and for
Dungeons and Dragons followers levels
one to two are appropriate to third level
characters and the lower levels are more
come 10 an untimely end one ot lour
things may happen, you may get eaten by
a wandering monster... bye-bye, or you
may be found and resurrected by one of
three 'friends of the dungeon'.
One will do this for nocost. other than
the request of a donation to his holy
order, the other two will extract varying
degrees of payment. So what? You are still
alive and able to add to your valuable
udsii iuies iui pidymg. logeiner wnn a
room by room description of the various
locations. The graphics representation
shown on the screen simply depicts a
series of rooms and joining corridors.
It is not absolutely necessary to read
Liididiieis dim ine lower levels are more
suited to fourth and sixth level characters.
Once you have set out on your present
quest you have a number of commands
available to you. The latest version of the
Trilogy allows for the use of a joystick,
anve ana aDie to aaa to your valuable
experience.
If you 'save' your character afler each
foray into the unknown, you should be
able to gradually build up a better
powerful character. After each return to
the descriptions but it helps set the scene.
You will also need to refer to the manual
to cross-check against the various
treasures that you find.
The three scenarios provided by the
Temple Trilogy are in many respects
compatible with many non-computer
role playing games. You may even
'convert' an existing character in one of
these to venture forth into Apshai. When
you first start playing you are given several
choices.
You may start from scratch, with your
with ihe four directional movements
giving you 'turn 90 degrees left or right',
move five feet in the direction you are
facing or rest.
The joystick, with the fire button
depressed, also offers normal attack,
parry, thrust (all out attack) or fire a
normal arrow.
Single key commands from the key-
board also allow you to: move forward
from one to nine feet (keys 1-9), turn to
the left, right or turnabout (180 degrees),
attack, thrust or parry, fire a normal or a
the inn, the innkeeper will pay you for any
treasure you have collected and you will
have the chance of adding or improving
your equipment.
Just remember the restrictions that
super heavy weapons and armour place
upon your movement and energy usage.
Also remember that copies of the
poorer version of Temple of Apsahi are
still around, make sure you get the latest
version. You want to spend weeks over
the game not hours over one move!
Happy hunting!
Communications
, iea ||y good news is that it's
n updating messages.
TS B«N A HECT.C MONTH ^ THE
world ot Co- S Some se
decided to P. u ' " P an '^nced and new
didn't help things either!
Chatting!
everyone ^'^pi't'inorde.,
'"" ed TefotSat. ha' spruced.
and send It. keying ; » 2 « sen ,
Quickchat I 2 a A n S d ^:,„ B ,i,e the pre-
,hey are displayed ana there is no
vioU s message. bu , , und er-
cta r,nt;non-Mic™ne. subscribers do
^^SCSSIS; one and
-r-Hi-a,heoid
previous messages can use e!s .
Service of which ^ he messag e
S'lr^S^' costs 2 P a
message. The
much fasier
Buttons
haS a ' S ,° trrlbe and offers a number o
Prestel subscriber^ an ^ w „
quizzes and games to play ^ as
1 doubt ^.XgeWs »»•»«"« who
^^hTprlc^Microne, sub-
scribers. rhatline of its own.
Buttons also has ,a Chat t ^
The interesting P°J"' ^Subscribers, and
open access to a I Presw s su ation
; s m ^rn^ingrAbTto.ari P -of,a,7pa
message though'
which you pay « bV upload and
Srad ,o Y °yo U ""ea„'s content until
your credit runs out. „„, c all
Confused! ) an V* uln ber which is
Compunet on its new
° 1 - 9 Aorfon CNET Proper next month
when I get my 64 fixed.
Compunet Costs
new three tier No! Well it
a ,ion s.nce 1 ol people haven t
would appear that i lot o p v
so here are some co5ts t7 .50
The basic rate subscnp |ree
per quarter and P ro vrfes y ^ co
courier service and six n a casn
lime p e, quar te- . Unless ^y ^
account where you s n<jt fae
Compunet of ^.^o. purchase items
able to do any upload °' P n ^ ion
c-*"jsr * : " h commodore
-l^ose who are not^t sublets.
lake h ,rom me i that th s^P ^ ^ „
,ion is duff, you are -ar I0V ,des
standard rate subscnp «»" off-
free courier service," loa ded
peak connecuon and 500 ^ 1(jp _
frames. Basic rate h costs £10
^ua^dwi.l-cVargedn.SOper
qU wtth a Standard rate subscription ,. is
The News!
m ay have announced a m a , ^
CNET. It IS j U that fits inside the OEL
has designed a ch,p,h at Ms- b[eak , he
comms package. Th.s^ h on
consists of a d " k »"°S Apparently you
Wnetd«SC^n
k^W^ ^ ^ '
duplex modem'. • Miracle
Vanwhile the big boys « ^
Technology. J»« P'^ing 1200/75
Multi Modem fori!". e r and
and 300/300 bau ^V' _ the cartridge port
auto-dial it conne ts o the ROM)
g^du^bt^narandPrestelcompati-
biliiy-
The Wind Up
Havel no, informed you of something!
Do you know someth g
happening In he Com , lea5 e!) by
don't? Then inform m tH preste ,
sending a message , to m q
919992677 or ComP"^ me a letter (a
$sr&& "** c/o Your
Commodore.
CORNE
f- AIR • COMBAT ■ EMULATOR • £10.95
■ BY CASCADE GAMES ■ #iaV*C I AND POSTAGE
>OuaPBlhekSliEWerpWwflhcrtv»iree |\
ACE Ktai2lmJ1l<oleAJIWwt»All H •^■■M
The AIR CO*A' EMLLATOP. pocked with
ecllig)«j*i«.6byl(ilie(afloF.'TOfl
recfcftc ftcf wnJOtor cm*Ob. fa Ihe
to lime ona heme computer, (eel what it a
r«^lhetolVoN^certanKrcerrillW¥
jefarxlergcge tanks, missiles, shps.
hefcopler guv*fce aid two types d
currg indigent €ren^ aKntfl
fealjrg over 300 sproe rages. ACf
hes the smoothest, mat debated cockpit
Wewd hlb. leaandc^gfourd otiecrs
»m* achieved ftrks to i*xx#»
awi»n DvranK Graphc lechrtaye
M^Y. e ) (Jkwi-Q wrwtm» hgh ©eea
ioM:&pj*hcs.
n cental, you head w* sph as you
s^ggte -Tth to help fre aavonced
avfc>to which hcudea rea-view camera
crd raw. to Say ofte fcrg e«xgh to do
sane domoge to te enemy
The irlque two seat llyfrg option (pilot.
rxwgokxVeapcrisrTan)ardBurai«o
aran© which poses vital dojfi
ccrdtian Harnofcn to fie Ight oew
dyrornC tactoal map. take ofc aid
terdhgs summer. wHer and righMlme
flytg crd a rerrofcobV psoMc In-flight
■fanhciQpla reds U t N (wata
APCOAMEKUATOR
ACeSCfNAINO
A vast reason Heel ha breed on your
soulhein shores and dschaged scores d
Ortt supported bvreSccc^gunWi
and preceded by nKfcle surface 0 dr
mMes. SayoOrcfo oi enemy fighters give
the Bnemy laces air cover Adwororcj
njWessfy tiey ae ccrqjenrg your
hemekxd. kicirg no cppcsibfi
2 the lastflgrrtBrpid wflh crty free
ACE KVrt 21 mumfoteAH Woofer All
tenon J*U/ecorrtcflc*c>arl tvosedd
analed akbose. you to* 6 to attack and
dssloyreruTenoalvsuxnotQremy
lard and at taces and dive them Horn
you shoes. The (Vol stage at the conflct.
Fortig arajJy XTf:',*!] !'>:■ iner-v kre
ton»ardshaaownlh»o*torce.istosr*
Be enomy test as it evaaota its defeated
amy
ACf - EXPERKNCe II NOW
( vefyecmpjiot game ten wfl love ACE -
Jiri leak at Ihese leatucs -
• ICW opnmfled mcchre code uses alt
ovoJabte memory.
• feauing DranK Graphic TocftTowis
• "•»: ':r--r rjvj •-,<• >•>..;
cockpit view of cry tight smJofion.
• Views of hfc trees, tanks and Cher
ground cCiecri Aeral cental, gard
croc*, and rovat attack
• Suoiu e ihe speech
does rot freeze tie acton.
• hvoseatoptai-lyand
fight w*h head at a
trend
• Sef6atkra30si*d
oting wietanedjpopnic!
isovrgGysjem.
• jyj/ e optiafton [Al Vtedher Al lenanl
• Note due to memory IrrWolons ACt an
reD6croV)C3]|+WPom)abrc*rcMt
crvg^junaobpects
CALCULATOR WATCH
Mooe*CaKvlaio<Mofto
VMM
REE!!!
Order ACE today and
receive this fantastic
20 KEY MULTIFUNCTION
CALCULATOR WATCH
ABSOLUTELY FREEH!
DDIf^C £10.95 (CBM 16 and
rKIV^L VIC20E9.95)
Postage FREE in UK. Add £1 for overseas orders.
Allow 28 days for delivery.
t enclose ctieque postal order (or (£ (mode payable
to Ctascade Games LW.
Or tr»ougf> any Pest Office by Transcash (Gfo No. 655 6655).
For even (astef Ofdenng when c*x»g^toAcx^,Bcfclayccrdc»KJ
Trustcard Vaa use our 2 A r* service (Tel 0423 504663)
F"5
IJ064
HO plus a
NAMF
ENTER CREDIT CARD NO IN BOX: -
□ OVIC20(with8K
expansion)
ADTWSS.
POSICOW.
COUMTPV_
ACE -EXPERIENCE IT NOW!
Please complete and send to-
Coscode Gomel Lid
1-3 Havwro Crescent
HcflGCjatoM&15BG fjigland
ooo
o 0 ©
S3 O O
E3 ED CO
Derek Moody gives
more control to your
lingers with this article
for the C16.
I PURCHASED A C16 AT THE
end of March but horror of
horrors, here was yet another
Micro supplied with an in-
adequate manual. Commo-
dore suggest that you should
buy their Programmer's
reference guide, but that
doebn't even contain a memory
map, let alone operating
system entry points or
connector pinouts. First of all, I
needed a decent keyboard
control routine, so I
disassembled the ROM and
starting searching for the
necessary information. This
article is based on some of (he
results.
The C16 detects keypresses
and stores them, even when
the computer is doing
something else. This is possible
because the keyboard is being
read in an interrupt routine,
this routkie also maintains the
real time clock and does a
certain amount of house-
keeping for the operating
system. The IRQ interrupt
routine is called 60 times each
second, and there are three
points at which it is vectored
through RAM, at $312, $314,
and $316. The vector that will
be of most interest to" us is at
$312, the computer refers to ii
after most of the house-
keeping, but before updating
the real time clock and reading
the keyboard. A vector, by the
way, is an address held in two
bytes of RAM, which points to a
block of machine code in
ROM, by altering a vector, the
programmer can cause his own
block of code to be used
instead.
The keyboard is read by a
short, 10 byte routine at $DB70
this works by writing the
contents of the accumulator to
the columns of the keyboard
matrix, and reading the rows
Program Listing 1
REM
REM
REM
REM
C16 KEYBOARD MATRIX DEMO
BY DEREK MOODY APRIL 19E4
10
11
12
13
20
40
50
60
97 :
98 REM CONTROL ROUTINE
99 :
100
1 10
120
130
140
997 :
99B READ MATRIX, AND PLOT RESULTS
999 :
1000 XX7.= 1
1010 FOR X=0 TO 7
1020 : POKE D7.,XX7.
TC7.=3072+41
D"/.= 14335
GOSUE 3000
GOSUB 2000
DO
: GOSUB 1000
LOOP
END
Program Listing 1 (cont)
1030
1040
1050
1060
1070
1080
1090
1100
1110
1120
1130
1140
1997
1998
1999
2000
2010
(110) i
2020
2030
2040
2050
2060
2070
2080
2090
2100
2110
2120
2130
2140
2150
2160
2997
2998
2999
3000
3010
3020
3040
3050
3497
3498
3499
3500
112
3997
3998
3999
4000
4010
4020
4030
4040
4050
: SYS (D7-+1)
: R7.=PEEK<D7.)
: YY%»1
: FDR Y=0 TO 7
: CX=32
: IF <R7. AND YY7.) THEN C7-=160
: POKE TC7.+Y*120+X*3,C7.
: YY7.=YY7.+YY7.
: NEXT Y
: XX7.=XX7.+XX7.
NEXT X
RETURN
:
PRINT MATRIX
FORMAT ON SCREEN
SCNCLR
PRINT"I/D 3
; " ";CHR* (95)
PRINT: PRINT
PR I NT "RET W
PRINT: PRINT
PRINT" # A
PRINT: PRINT
PRINT" HLP 4
PRINT: PRINT
PRINT"F1 Z
PRINT: PRINT
PRINT"F2 S
PRINT: PRINT
PRINT"F3 E
PRINT: PRINT
PRINT" © SHF
RETURN
INITIALISE MACHINE CODE
■
FOR PTR=D7.+ 1 TO D7.+ 14
: READ CODEX
: POKE PTR,C0DE7.
NEXT PTR
RETURN
*
MACHINE CODE DATA
5 7 9 ";CHR*(109) ; CHR*
R
Y
I
P
* C/H"
D
G
J
L
; CTR"
6
8
0
-> 2 "
C
B
M
ESCSPC"
F
H
K
■
■
= COM"
T
u
□
+ Q "
X
V
N
/ R/S"
back into the accumulator, the
X and Y registers are preserved.
The keyboard matrix is
shown in Figure 1, to select a
column for reading, that
column should be pulled low
by writing a zero into the
appropriate bit, whilst all the
other columns should be held
high, ie., bit value 1. Therefore
to select column 2, the number
required is, in binary 11111011
or $FB or decimal 251. If no key
on that column has been
pressed, then the number
returned will be 11111111 or
$FF or decimal 255. If, however
any key on that column has
been depressed, then the
appropriate bit(s) will be zero,
for example, if both C and T
were pressed, then the
number would be 10101111 or
$AF or decimal 175. To examine
every key, requires the routine
to be called eight times, once
tor each column. To detect
whether ANY key has been
pressed, send a zero to all
columns, and if the returned
value is not 255 then one, or
more, keys must be pressed,
although which key(s) will not
be obvious.
The advantage of using this
routine rather than the BASIC
GET and GBTKEY statement lies
in the ability to detect and use
multiple keypresses. PROG-
RAM 1 serves as a useful
example and testbed. When
RUN the program presents
DATA
219
173 ,
, 73
255
, 255
55
73
255
32
141
255
55
96
DISASSEMBLY OF MACHINE CODE
3800
3803
3805
380B
380A
380D
AD
49
20
49
8D
60
FF
FF
70
FF
FF
37
DB
37
LDA
EOR
JSR
EOR
STA
RTS
$37FF
#$FF
*DB70
tttFF
J37FF
Program Listing 2
10
1 1
18
13
20
30
40
50
60
70
80
90
97
98
99
100
1 10
120
130
140
150
180
190
197
198
199
200
210
220
230
240
250
REM C16 GOBBLERS
REM
REM BY DEREK MOODY APRIL 1985
REM
:
DIM PLX< 1 ,500)
TCX-3072
SCNCLR
OX- 14335
GOSUB 2500
POKE P1X,81
POKE P2X,87
t
REM CONTROL ROUTINE
DO UNTIL T
I GOSUB 200
I GOSUB 600
I GOSUB 300
LOOP
IF T-P1X THEN
GOSUB 2000
END
I
GET MOVES AND
1
SEX-2
GOSUB 500
P1X-P1X+MOVEX
SEX-32
GOSUB 500
Figure 1 - Keyboard Matrix COLUMNS
0 12 3 4
6
Efl
CO
INST
Df I
RET
HELP
F1
F2
F3
W
D
8
B
H
U
0
M
K
♦
♦
ESC
□□□□□HDD
S2=S2*iei0:ELSE S1=S1+100
UPDATE POSITIONS
P2X-P2X+M0VEX
260 RETURN
297 i
298 INSERT RANDOM 'STARS'
299 i
300 IF INT<RND< 1 >*10> THEN RETURN
310 STX-TCX+INT<RNO< 1 >*1000)
320 IF PEEK<STX><>32 THEN RETURN
330 POKE ST"/., 42
340 RETURN
497 t
498 CALL KEYBOARD ROUTINE AND
CALCULATE MOVE 499 :
500 POKE DX,SEX
SYS <DX+1)
RX-PEEK<OX)
MOVEX-0
AND 2) THEN MOVEX-MOVEX-40
AND 4) THEN MOVEX-MOVEX- 1
AND 16) THEN MOVEX-MOVEX+40
AND 32) THEN MOVEX-MOVEX+ 1
0
COLUMNS
1 2 3 4 5 6
0 —
1 —
R2-
S4-
5-
6 _
7 —
Figure 2 — Single Keypress
510
520
530
540
550
560
570
580
590
597
<RX
<RX
<RX
<RX
IF
IF
IF
IF
IF MO VEX
RETURN
I
THEN SOUND I NT (SEX/30* 1 ) ,2 00+ SEX, 4
Program Listing 2 (conl.)
598
599
600
610
620
630
640
645
650
660
670
680
690
695
697
698
699
700
710
720
730
740
750
760
997
998
999
1000
1010
1020
1030
1040
1050
1060
1070
1080
1090
1 100
1 1 10
1 120
1 130
1 140
1150
1 160
1 170
1180
1 190
1200
1210
1997
1998
1999
2000
2010
2020
UPDATE 8CREEN AND LOOK FOR COLL 18 IONS
P1'/.OPLX<0,S1X> THEN T-P IV.i RETURN
MOVE>; THEN T-P2X » RETURN
Tl*/.-PEEK(Pr/.>
T2X-PEEK<P2X)
IF T15044 THEN IF
IF T2X>44 THEN IF
GOSUB 700
PLX<0,S1X>"P1>:
PLX< 1 ,S2X)-P2X
POKE P1X,81
POKE P2X,87
POKE PL*/.<0,E 1X> ,32
POKE PL%< 1 ,E2X> ,32
RETURN
I
HANDLE ARRAY AND TAIL
i
S1X-S1X+HIF S1-/O500 THEN S1X-0
1 IF S2%>500 THEN S2X-0
IF T1X042 THEN E1»EIX+1*IF EIK>500 THEN
IF T2X042 THEN E2X-E2X+1HF E2X>500 THEN
IF Tl»42 THEN SOUNO 1,500,10151*51+10
IF T2»42 THEN SOUND 2 ,300 , 10 < S2-S2 + 10
RETURN
I
SETUP SCREEN AND INITIALISE PLAYERS
I
FOR X-0 TO 39
I POKE TCX+X,102
I POKE TCX+960+X, 102
NEXT X
FOR X-39 TO 959 STEP. 40
t POKE TCX.+X, 102
i POKE TC'/.+X + I , 102
NEXT X
Pl»TC%+490
P2V>TC"/.+510
SIX- 1
S2X- 1
El X-0
E2'/-
T-o
PLX<0,S1X>-P1X
PLXC 1 ,S2X)-P2"/.
GOSUB 3000
51- 0
52- 0
VOL7
RETURN
I
PRINT SCORES AND END GAME
l
PUDEF-0"
PRINTCHR*< 19 >
PRINT
E1X"
E2X'
0
0
an on-screen picture of the
keyboard matrix, if any keys are
held down, then the relevant
matrix position is indicated,
note that in this case the keys
must be held down as the
BASIC routine takes a little over
a second to record the current
position. As the programme is
written, it leaves the operating
system keyscan untouched,
when you have got the
programme running properly,
add the following line.
70 POKE 786,190:POKE787,252
SAVE this version of the pro-
gramme before you RUN it,
this steals the vector at $312,
and points it to the end of the
interrupt routine, thus
bypassing the normal keyscan,
and leaving BASIC with no way
of reacting to the keyboard.
The new version of the
programme does not recognise
the RUN STOP key, and allows
us to experiment at will.
In PROGRAM 1, TC%
points top the top left corner of
the matrix as it is printed on the
screen. D%, points to the data
byte through which para-
meters are passed to and from
the machine code routine, the
machine code itself starts at
D%+1- XX% is the value that is
passed to the machine code
routine, R% is the value
returned. YY% is a value gen-
erated for comparison with
0
COLUMNS
1 2 3 4 5 6 7
wmm
— — * —
i -
0
1
£ 2
S4
5
6
7
Figure 3 — Ghost Keys
Program Listing 2 (conl.)
2030
2040
2050
2060
2070
2080
2090
2100
21 10
2120
2130
2140
2150
2160
2497
2498
2499
2500
2510
2520
2530
2540
2550
2560
2570
2580
2590
2600
26 10
2620
2630
2640
2650
2660
2670
2680
2690
2700
27 10
2720
2730
2740
2750
2997
2998
2999
3000
30 10
3020
3040
3050
3497
3498
3499
3500
, 73
PR I NTCHR* < 1 66 ) > "
PR I NTCHR* < 166 >f ■
PRINTCHR*< 166 >> "
PR I NTUS ING "*#** • ; s l ;
PRINT" " t
PR I NTUS I NG "#*M* " ? S2 ;
PRINT" #"
PRINTCHR*< 166)? "
PRINTCHR*< 166); ■
FOR X-0 TO 100
: GET A*
SOUND 3,33,1
NEXT X
RETURN
s
TITLE SCREEN
SCNCLR
FOR X-0 TO 15
* PRINTSPC<X*2>;
: PRINT-GOBBLERS-
NEXT X
PRINT
PRINT"
PRINT
PRINT-
PRINT-
PRINT-
PRINT"
PRINT
PRINT"
PRINTCHR*< 19)
FOR X-0 TO 11
: PRINT
NEXT X
PRINT" GOBBLE
PRINT" AVOID
DO WHILE A*="
I GET A*
LOOP
SCNCLR
GOSUB 1000
RETURN
*
tttttt*«tttttttttttttttttt#tt»ttttH
PLAYER 1
U
z
A
S
PRESS
THE
THE
STARS
REST-
TO OX+14
INITIALISE MACHINE CODE
!
FOR PTR-DX+I
i READ CODEX
> POKE PTR, CODEX
NEXT PTR
RETURN
I
MACHINE CODE DATA
DATA 173 , 255 , 55
, 255 , 141 , 255 ,
R%, it is used to discover the
state of each bit of R%. C% is the
character poked to the screen
display, it is set to either a
space, or an inverse space
according to requirements.
You will notice that two of the
arrow characters, which are not
included in the standard
character sets, had to be
concocted from others. If you
inspect the disassembly of the
machine code routine, you will
notice that the parameters are
passed in an inverted form, ie.,
every 1 has been replaced by a
0, and vice versa, this was done
in order to simplify the BASIC
logic, the values passed to the
keyscan routine are correct.
The keyboard is i n essence a
set of switches that permit
connections between eight
lines representing the
columns, and eight that
represent the rows. By applying
a voltage to one of the
columns, and searching for a
corresponding voltage on the
rows, then a closed switch can
be detected. For example, if
the space bar is down, the
voltage applied to column 7
can be detected on row 4, see
FIG 2. So far so good, but we
have a problem, when you ran
PROGRAM 1 you may have
noticed that sometimes keys
were indicated as having been
pressed when you had not
touched them, why? Look at
FIG 3, on a simple matrix like
this it is possible for switches to
mask each other. If 'C', T, and
'M' are pressed together then
'O' is detected as well, go on,
try it! What happens is this,
when a voltage is applied to
column 4, the closed 'M' switch
passes it onto row 4, then the
closed 'C passes it onto
column 2, and finally the closed
T* passes it onto row 6, where it
is detected by the keyscan, of
course a voltage applied to
column 4 and detected on row
6 means that '0' has been
pressed, doesn't it?! This
phenomenon will not often
cause problems, but it has to be
borne in mind when selecting
control keys for games etc., it
would not do, for instance, if
hyperspace were selected each
time up, left, and the fire keys
were pressed simultaneously.
As a spin off, next time you run
an unprotected BASIC
programme, press 'N', 'M', and
the space bar all together, hey
presto!, RUN STOP!
PL%(array) List of player addresses.
TC% Top left corner of screen.
D% Parameter address (as programme 1).
P1% Player 1 position
P2% Player 2 position.
51 Player 1 score
52 Player 2 score.
T Flag. 0. or 'crash position'.
SE% Parameter passed to machine code.
MOVE% Player position update value.
ST% Random position of new star.
R% Value returned from machine code.
T1% Contents of new player 1 position.
T2% Contents of new player 2 position.
$1% Player 1 list start pointer.
S2% Player 2 list start pointer.
E1% Player 1 list end pointer.
E2% Player 2 list end pointer.
Note that PL% (array) is
implemented as a circular list.
Let's have a practical
example, PROGRAM 2 is a two
player game that requires the
detection of eight keys, several
of which might be in use at any
time. Each player has to have
controls for up, down, left, and
right, and in addition we must
permit diagonal movement. To
simplify the input routine, it is
desirable that all of one players
controls should be on one
column. It so happens that if we
use column 1 for player 1 , and
column 5 for player 2, then
there are suitably placed keys
for both players on rows 1, 2, 4,
and 5. The machine code in
PROGRAM 2 is identical to that
in programme 1, and the
keyscans are made in the
subroutine at line 500. This
time, rather than looking at the
whole keyboard by means of
eight column scans, only two
scans are made, and the rest of
the keyboard is ignored,
however the interrupt vectors
are untouched, RUN STOP still
works.
The programme is struc-
tured for clarity rather than
speed, but despite this the
game is quite playable.
The
As wen in tho national press
WINNERS
of th^ ASP DREAM HOLIDAY Competition
Argu^pecialist Publications Ltd. are pleased to announce
of the fabulous Dream Holiday Competition.
HRSTPRIZK
-a holiday am w here in the world
•up 10 a value of £2.500 has been
awarded lo Mr K.Gouldthorp
of: WoodMde Road. Radcliftc
-on-Treni, Nottingham NG12 2HJ
Se cond Prize
-the very latest in portable video
camera 'recorder (with mer
moot goes to MrC K. Duffy
of 63 Cross Flats Place. Becston.
Leeds LS117JN.
71
I bird Prize
the ever popular BBC Model B
Microcomputer plus software
package, awarded to Master P W.
Dawson of II Ladicside. Bnic.
Shetland ZE2 9SX
And the winner ol the
fourth prize
a %uperh Minolta KT00 camera
with M)mm lens and flashgun is
Mr Lee Sullivan of ^ Admcrs
Wood, Vigo Village. Mcopham.
Kent DAIS OST.
ASP would like to (hunk everyone who entered thccompeliium.
and CONGRATULATIONS to MrGouldthorp for his w inning
sentence which we've printed below
"...to combat boredom by the beach,
keep magazines in easy reach!"
When you are designing a game one of the longest jobs is de-
signing the sprites. If you are good at art then fine, if not your
next monster will probably end up looking like a square box
with legs.
Now, Your Commodore comes to the rescue once again
with Sprite Ideas. If you have designed any sprites for games
and you don't mind other people seeing your masterworks
then why not send them into us. Each month we will be offering
£10 for the best entries.
Your sprites can be anything at all (within reason), if you've
designed a series of animated characters then send in the lot
We'd love to have a look at them.
So, next time you are after an Ogre to put in your new game,
have a look in this section of the magazine and you may find
just what you are looking for.
uizard
DATM,248,0,2,3O,O,2,28
DATAC, 1,56, 0,1, 216, 0,2
LEE GOODMAN
DATA22C, 0.6. 222,0. 14. 223.0
BERKHAMPSTES
DATA3Q, 159.0.38,57.0,39,24°
DATA0.39, 249.0.39.249.0, 27
DATA254, 0, 3. 2.2. 9, 3, 252. C
DATA3.254. 0.3.255. 0.3.255
DATAO, 3. 255. 128.7,255. 192
HOLMES - HEAD DATAO. 10. 128,0, 10,160.0.42
DATA:6B, 12.170,168,0,5.252.48
STUART JAMES DATA25.124. 0.85,124. 12, 5, 114
BIRMINGHAM DATAC,61.90.60,197,!70,63.10
DATAI36. 60, 10,174, 0,10,174,5
DATA2.238.25:. 123, 174, 13. 122, 174
DATA3.122. 250, 0.15,168.0, 2
DATA:68,0,3.252.C.2,16e
HOLMES. LEGS
DATAO. 10,168,0.42,168,2.170
DATA16B,2,17C, 160. 10,170,160. 6!
STUART JAMES
DATA207. 240. 63, 207,240. 15,243,252
BIRMINGHAM
0ATA15.243. 252. 3.252.255,0, 255
DATA63, 0.63,42, 0,191, 42.0
DA T A168,168. 10.168. 168. 10,136,0
DATAO, 0,0, 0.3, 0,0,0
DATAO.O.CO.O.O.C
WA SON-HEAD
AJTAA IA * lO A d "* (LA A ITA
DATA160.2.1* 1,240. 0,33.240,0
STUART JAMES
CATA85.240.0.6I.5O.O.29.90
BIRMINGHAM
CATA0.2I, 170,0,2, 170,0,10
DATAU8.«,4...~2..53.-35.194,5
DATA235. 184, 13. 238,184, 0,58. 232
ErTAC .23j > 169. j, 1. 3] 23 J. 21.. -0
DATA168.85. 10,168. 116, 42.169
GHOST
DATA0.64, 0.0.224, 0.1, 176
DA7AG.3.19,0. 51. 31. 128.123
LEE GOODMAN
DATA31.12B.12\19i. 0,63,254.0
BERKHAHPSTED
DATA:5, 248, 0.3.248,0.1. 252
3ATA0.1. 252.0, 1.254,0,1
DA*A254, 0.1.254. 0.3. 254.0
DATA3, 254. 0,3. 254, 0,3, 254
DATA0,7,255,C, 15,255, 128
KATSCN - LEES
0ATA48.42. 168. 48. 42.158.49,170
DATA168, *B.25Z,252, 48.252.252.51
STUART JAMES
DATA243. 240.51. 243.240, 51. 240.252
BIRMINGHAM
DATA51. 240. 252.51. 240. 252. 51. 242
DATA168.50.162.160. 58.138. 128, 59
DATM28,O l b.O,0,C l C l $
OATAO,0,Q,0.0, 0.0,0
DATA0, 0,0, 0,0,0,0
CHOPPER
DATAO.0,42, 170,170,0,8,0
D DERRICK
DATA0. 21. 0.64, 127,64,80, 127
DATA208.B1. 255,244,81, 255, 253, 2!
CHEDDAR
DATA85. 85,5, 85. B5, 1,85,84
DATA0. 0,0,0,0,0, 0,0
DATAO.85,80, 0,48,195,3, 255
DATAO.0,0, 0,0,0,0,0
DATA252.0, 0,0,0,0,0
Machine Code Entry— C64
100 INPUT '[CLEAR, DOHN23ST ART ADDRESS " ; ADR
110 PRINT "[D0HN21PLEASE ENTER ALL DIGITS.'
120 PRINT" EDQNN21SPACES HILL BE ENTERED AUTOMATICALLY
130 PRINT: PRINT ADR; a : " ; : GOSUB 260
140 IF SI-'CFU" THEN GOSUB 330:60T0 100
150 IF S$="[F33" THEN GOSUB 460:60T0 100
160 REH READ DATA AND STORE
170 CHECK=ADR-INT(ADR/256)I256
180 FOR Ol TO 36 STEP 3
190 N*=MD$(Si,C,3»:N=VAL(NI)
200 CHECK=(CHECK*NIAND 255
210 IF N>255 THEN N=0
220 POKE ADR,N:ADR*ADR+1:NEXT C
230 VFY=VAL(RI6HT$(S$,3))
240 IF VFYOCHECK THEN GOSUB 530:G0T0 130
250 60T0 130
260 S*=":F0R C=l TO 13: FOR L=l TO 3
270 GET Kt;IF K$="GDT0 270
280 IF K*= W CF11- THEN C=I3:L=3
290 IF K$='[F31' THEN C=13:L=3
300 SI=S§+K»
310 PRINT K$; : NEXT UPRINT" : NEXT C: RETURN
320 REH till SAVE YOUR FILE tilt
330 PRINT' [CLEAR, DQNN2, RIGHT23SAVE FILECD0WN2] ■
340 INPUT-FILE NAME ;'jFt
350 IF F$=" OR LEN(F$)>15 OR F*='Q' THEN RETURN
360 INPUT'[D0NN3,RVS0N]TCRVS0FF]APE ORtSPC.RVSONJDIRVSOFF:
ISK : D[LEFT33";DI
370 Ml IF D»«'D' THEN D=8
380 INPUT' [D0HN2JSTART ADDRESS IN DECIMAL :';S
390 INPUT'IDQNNIEND ADDRESS IN DECIMALCSPC43 : E
400 TS$=FI:T0=PEEK(53)+256IPEEK(54)-LEN(TS«)
:P0KE 7B2.T0/256
410 POKE 7Bl,T0-PEEK(782)t256:P0KE 780,LEN(TS»)
420 SYS 65469
430 POKE 780,1:P0KE 781,D:P0KE 782,0:SYS 65466
440 POKE 254,S/256:PQKE 253, S-PEEK (254H256: POKE 780,253
450 POKE 782, 1.E+D/256: POKE 7BI, (E+l ) -PEEK (782) 1256
:SYS 65496: RETURN
460 REH Itll LOAD DATA Ittt
470 INPUT'[CLEAR,D0NN2,RIGHT2IFILE NAME :"iF$
4B0 IF F$=" OR LEN(0$)>15 THEN RETURN
490 INPUT'[D0NN3,RVS0N]T[RVS0FF]APE ORCSPC, RVSQN3DCRVS0FF 3
ISK : D[LEFT3]";D$
500 IF DIO'T'AND DIO'D'THEN RETURN
510 WlIF DI="D-THEN 0=8
520 LOAD Ft, D, 1 : RETURN
530 PRINT: PRINT' ED0NN2,RIGHT)ERR0R':ADR=ADR-12
540 POKE 54296, 15:P0KE 54277,10
550 POKE 54278, 100:PQKE 54273, 45: POKE 54272,00
: POKE 54276,17
560 FOR X=l TO 250: NEXT
570 POKE 54276, 0:POKE 54277, 0:P0KE 54278,0
580 RETURN
ENTRY
ENTRY
We make life easier
for you wilh our
machine code entry
program,
THE WORST THING ABOUT
Machine Code programming is
entering thousandsof numbers
and then finding that the
program will not work. There is
nothing else that you can do
apart from go through all of the
listing trying to locate that
mistyped character which
prevents the program from
working correctly.
Now there's an easier way
to enter your machine code
programs. With the Your Com-
modore machine code entry
program, each line of numbers
is checked as soon as you press
return. If you have made a
mistake you will be asked to re-
type the last line. Another
added bonus is that you can
save what you have entered at
any time to tape or disk and
carry on where you left off next
time you come to your
computer.
Using the Loader
Before you type in any machine
code program you must have
typed in the machine code
entry program and have it
saved onto tape or disk. When
you want to enter any of the
machine code programs that
are printed out in the form
used by this program you must
LOAD it into your computer.
When you RUN the program
you will be asked for the start
address of the program. The
start address is the first number
in any machine code listing that
appears before the colon (e.g.
49152:). You simply type in this
number and press return.
All that you have to do from
then on is type in all the
numbers on a line. Do not type
any spaces and do not type
return, the program will do all
of that for you. If you have
made a mistake on any line the
computer will ask you to type
the line again. Once the line is
entered correctly the
computer will automatically
prompt you for the next line of
data.
Saving and Loading
You can save your data to tape
or disk at any time by simply
entering the F1 key as the first
character on any line. You will
then be asked for the start and
end address of the save. The
start address is the first number
in the listing as already
mentioned. The end address is
the number of the last line plus
11. Don't forget to add 11 or the
last line entered will not be
saved.
To load back a program that
you have saved you simply
have to enter the F3 key as the
first item on a line. You will
then be asked for the name of
the program.
Evesham
giioo
DATA *|CO*M>
.k.i..' MM "> P*N 1» Ml
n i-» r ns< ■ vw N V*"!*" 1 »
C/N CU -«K bull*". MOW
— I f *» C* n\un m I* ■ 1-"
MTVUIK~ . • - ■■ 1 1 ■
OHV IN.*!
i^wstot*
nSi°rS£
■PWy^M^ "l _^^ a <»**P«Z v t ""***""a M ^ ) j
WMtfri
■ MTfel t** 1 1
V3.0
hi
*t
IMJ
- mm £ -1'
an
FAST LOAD
PIUS
|| UTILITY CARTRIDGE
CmjOUlO0WC*c*Tr»^f poggwrioycw 64»Vyour >S*I ** rNHylUrt te parterre to Itavn W.
Fmi LOAD w»dJAyS (to* la m orm noniul spmn Worti *tlti now ptWIPO Kftwarr («i be iwa"*ll *i M
'bi row uanjini 10 wrcnfe
rnil«rM«iaprivrfWrraui^lmxa>un (Ma r**Mf i»wmrO w*r*f* 1
fere m Ceplt* frivr uu icpynj
ijMtMlOOScoiMuntn.tXHS tiawn^NrtuwoTiraiwanw rg MffTUM-«i(W)jr«<»i>u***r<
u-r-iTOjii^wtrowyc MFTUUItfnSiOW 'AIM rv h«mN
UworporM** Cwtronta printer ioNwm (WW DCtll CBM grapMa ,*«ly W Cownoooff Con-
A«SfTnrit*^h»o f*f wvarcoiBiDDf »m»ett'.Biiv)pwn«rnrr«rou*'l
NO MIMOTI IS IfllO If ttnijnirtj'. 41 4 HU>f D*Op#rnT *M Iflft WtO* Wtltf*iglftlw»t|Ufl
ONl»t19.«
5
«
1
■x-
It you're as
tmpfnoed
m wo aie
with ihe now
CommofJof*
121. you? be
oven moie
Impressed with Ino new jonwao IhaT s
•ppeohng lor < now" Already weVe 901
SuperBase 128 <££lh«£ IBS.OO!),
Superscript 128 (LI***' £ 69.95 •),
and tho amazing VliaWrlte Classic 128
(£>ft*S £89.00!).- so watch 0t9 space!
Mhough we are by tar
tho largest UK retailer
cl SuperBase. VizaSiar
andVc-aWido tot Ihe
Commodore M, tor
over five years we
have supported
the best soltwaro lor
al the Commodore buannM machines!
So it you have a CBM/PET 3000, 4000.
8000. 700 or PC. then donl torgol us. .
we havon'i torponen you! Why not ptiono
or write lor our CBM PET catalogue?
I J- Al Iho loaturos youTI over nood lor professional
_ ./jh ly M word processing andlhonmoro! Unrivalled
- a. (XTil/'w^/m 240-column lout hondSrvj, variable wldih
It/^^-T^V" »«<»'>. word-wrap, cul-and-pasle. four-way
S0*^ scrolling, document linking tor unlimited capacity,
global aearch-and-replace. help screen, ful memory calculator,
row and column arithmetic, menu or keyed commands wrth command strings,
background printing. corrpWIe letter quality prinl faSMOi Spelling checker wilh
boihUKandUS disk dictionaries, comprohonsrvo four part usor manual...
OUR PRICE J6a>«S £58.951 ...WHILE STOCKS LAST t
^CBOOKS
The Anatomy ol A Commodore 64 £8.95
Tho Anatomy ot the 1&41 Otsk Oiivo £8.95
Your '64 Cassone Book £6.95
Tricks and Tips lor your '64 £8.95
Machine Language Book lor the 64 £8.95
'64 Advanced Machino Language £8.95
Pooks and Pokes lor the '64 £7.95
Commodoio 64 Idea Book £8.95
Graphics Book lot your '64 £8.95
Are you a two-
finger typist?
Then why not let
SuperType help
you learn 10 touch-
type Iho tail and easy way... wrth your
computer as tho teacher! Al the larwly can
loarn this useful ski". allhoH own pace
and protil trom the very latest cornpuicr-
aidod training and (eedback tochr-quos'
OH TAPE £19^ £1 6.951
ON DISK £2>*5* £21.95!
Transform your Commodore 64 into a luU
featured professional database sysiem.
with up to 1000 characters per record on
up 10 four screens ... and up to 128 Items
per record, definable as key. tert. numeric,
result or date in tiles ol up W 16 molon
characters! SuperBase 64 even has calculator and calendar (unctions, easy Input
trom word processor or data mos. both menu-driven and program control, sotting
and searching, fully definable report and screen formats Superbase 84 Is essential
rf you wan) the most fcom your 64! Supplied on 1541 disk with tnceeeni tutorial
and roloionce manual, plus audio learning tape.
NOW ONLY £7Jfc45 £69.95!
Youi programs
will roally
_J take off with
{/ / '-— JetPack 641
* 100% compatible
wilh CBM Basic. Jelpack compBes
Basic programs into machine code.
running up »o 25 times taster
using up lo half as much memory!
And il evon accepts Basic extensions
and machine code routines as well'
WHILE STOCKS LAST... £3>fl4 £29.95!
, BUMPER
^ BUNDLES!
For a Hmlled period we con otter amazing
savings on lop-oualiiy books & software Irom
Fust Publishing Save £60 on Otter No 1
(Fir si Word • First Base • Power Plan)
for only £56.951 Save £20 on Offer No 2
(Basic 64 compiler • Assembler Monitor 64)
only £34.951 And save £10 on bosi-seiers
Oflor N0.3 (Anatomy ol the 64 • Tricks
ft Tips • Cassette Book)... only £16.85!
Please stow 5 days' rJoavery.
VIZ ASTAR 64
Spreadsheet,
database and
graphics loo...
HI integrated
into 0110 amazing
pack ago. al an amazingly affordable priori Tho very tatost design lochrwjuos comtww
the ultimate m ease-ot-use w«h an the sophistication ol a tuffy Integrated producL..
VlzaSUrs advanced (oatures includo highspeed maths funchons. largo 1000 by 64
workshooL programmab*ry. windows, col pioloclron. soarch and sort, kwt ecMing.
wordprocossor compolibikty. aimullanoous graphics inlogralod with a 1000- character
periocotd database, up to 2S0 charactors per liold.. the only product ol its kind tor the
Commodore 641 Suits most printers, supplied wrth excellent handbook (XL8 version now
avMUblewtha 40% bigger spreadshool plus business graphics. £12>»S £115.95!)
OUR PRICE (XL4) NOW ONLY £74.95'
VIZisWRlTE64
A hlgh-pertormance. loW-cost
wordprocossor, wilh lull on-screen
lormathng. that takes ful advanlage
oliho colour, graphics and memory capacifyoliho Commodore 64 that works with
both dJak and tape . and supports v»1ua!ly any printer' Wilh a conceo and oasy-lo-lollow
usor manual. VliaWrlte rs tho ultimate personal compulot word processor! (AvortabJO
wrth VlzaSpell. a 30.000 word disk dicbonary and spoiling -chockor. (or £90 9S £65.00!)
VIZAWRITE(OISK) «rM £67.951 (CARTRIDGE) £J9-#5 £78.95!
SuporBase Slarlor (SAVE £10!) 29 05
SIMON'S BASIC (SAVE £15') 35 00
MASTER 64 (SAVE £30!) 39 00
JETPACK (TAPE) 14.95
EasyScrlpi to Superscript upgrade-
send drsk and manual cover 44 95
Superscript loSuporScripM26 57 95
SuporBase to SuperBase 128 67.95
WANT IT TOMORROW??? CALL US TODAY!!! ON 01-546-7256
Prices Include VAT and POSTAGE
and are correct on going lo press.
Order by post or phone, using
cheque. Access. Barclaycard or
postal order. Despatch Is by same
day 1st CLASS posl Product data
available on request or phone for
advice If In doubt |REF A35|
LAKESIDE HOUSE, KINGSTON HILL. SURREY. KT2 7QT. TEL 01-546-7256
All pritei Include PftP and VAT. Send cheque. Postal Order of Credit Card No.
Credit Card order Accepted by phone. Calleri welcome. Wide range of good*
Hocked. Trade enquiries welcome. European orderi tend price ai advertiiad.
Outude Europe (2.00 for elrmiiM. Mall order to Evesham Shop please.
EVESHAM MICROS MICRO CENTRE 1
BRIDGE STREET. EVESHAM. 1 756 PEI7SHORE ROAD,
WORCS.. WR1 1 4RY. COTTERIDGE, BIRMINGHAM. |
Tel:038641989 Tel: 021 -458 4S64
Dave Crisp takes a look at a
handy utility that will allow
How's Your Disk Drive?
APART FROM THE FACT THAT IT'S
slow, does il also fail to load some of your
software?
Well, the problem could be head
alignment. That is, the part that moves
over the disk in your drive. Because of the
two types of metal used in the head
mechanism high temperatures cause the
metals to expand at different rates. The
result of this is a sloppy head. The answer
to this is to let the drive cool down and
hopefully things will be OK again.
The other cause of mis-alignment is
more serious. Have you noticed with
some protected software the drive makes
a hammering noise like a machine gun?
This noise is the mechanism being
'bumped' against the stop. This repeated
hammering will eventually knock the
head out of position.
Would other computer owners put up
with a situation where software can
damage the hardware?
If you are suffering from a badly mis-
aligned head then this software from
Evesham Micros may be the answer.
No Special Equipment
As far as I know this is the first disk of ite
type. For the first time it is possible to
check and remedy head alignment
without equipment such as oscilloscopes.
The disk itself has had its tracks
recorded 'off-line' so that the program
can interpret what it reads into a
measurement.
When I received the copy of the
software I was relieved as my heads were
so mis-aligned that it was getting to a
point where I was finding it difficult to get
a directory of a disk let alone save
programs with any degree of confidence.
The Tests
There are two main tests:
1 Speed and Clamping lest
The speed at which the disk rotates in the
drive is very important and the 1541 exam
shows quickly whether this could be the
first of your problems.
The software takes 10 measurements
of your drives speed. This is then con-
verted into an average speed. This
average speed should be within -3 to +3 of
300 rpm (1%). If this is OK the difference
between the fastest sample and the
slowest sample is noted and if this is
greater than 0.6 then this would result in a
failure.
2 Radial Head Alignment
The program reads what data it can from
off-track disk and shows the result on a
chart.
The chart is made up of a display of
asterisks which shows at a glance how far
out your drive head is. The chart will also
show whether the mis-alignment is to the
inside or outside of the track.
In the manual provided there are 14
read-outs- showing results and a remedy
so whatever result you get you should be
able to find a chart which looks something
like the one you obtain.
There is a third test which checks the
position of the TRACK 1 STOP.
This is a metal casting which stops the
head moving further back than track one.
It is possible for this casting to become
misplaced which obviously results in the
head mis-aligning with that track.
The program does a stop check and
shows on the chart whether you need to
re-align the stop.
A printout of a chart is shown below.
Doing The Work
If after doing the test you decide that
some work on your drive is required the
manual will take you through the pro-
cedure step by step. There is not enough
space here to allow me to go through the
procedure but you would need
confidence in yourability to pokearound
with a screwdriver without damaging
anything. If in doubt find somebody who
feels a little more confident.
Silence The Gun
You will also find in the manual a small
envelope containing two soft metal
springs. These replace the standard head
stop. This is a simple job and one that is
worth doing.
This does not stop the 'hammering' of
the drive but it does make the hammering
very quiet and less damaging. After fitting
the 'quiet stop' run the test again to
ensure that it is in the correct position.
Conclusion
This is a good buy if you envisage
problems. Of course if you head is so far
out of line already you will not be able to
load the diagnostics anyway. It is a useful
thing to have and one which most
Commodore owners would find useful at
some time in their drive's life.
At £39.95 it is not cheap but could pay
for itself. It is available from: Evesham
Micros, Telephone 0386 41989 or 021-
458564.
Listings will be much easier to
enter with our new system.
COMMODORE LISTINGS ARE RATHER
well known for the horrible little black
blobs that always abound. Unfortunately
the graphics characters which are used to
represent graphic and control characters
do not reproduce very well and they are
also difficult to find on the Commodore
keyboard.
In future all control and graphics
commands will be replaced by a mnemonic
within square brackets. This mnemonic is
not typed out as printed in the magazine
but rather the corresponding key or keys
on the keyboard are pressed. For example
(RIGHT) means press the cursor right key.
you do not type in [RIGHT]. All of the
keywords, what keys to press and how
they are shown on the screen are shown
below.
Any character that is accessed by pressing
shift and a letter will be printed as
[Sletter].
[SAJ shift and A
[S+] shift and +
Any character that is accessed by
pressing the Commodore key and a letter
will be printed as (Getter)
|CA| Commodore and A
(C+l Commodore and +
(C1] Commodore and 1
Mnemonic
[RIGHT]
LEFT]
|UP]
[DOWN]
[Fl]
[F2l
[F3]
[F4|
Symbol what to press
left/right
shift left/right
Shift & up
/down
up/down
11
shift & fl
f3
shift & f3
LISTINGS
If any characters are repeated the
mnemonic will be followed by a number.
This number is how many times you
should enter the character. Any number
of spaces over one will also be
represented in this form
[RIGHT10] press cursor right 10 times
[C+10] press Commodore and + 10
times
[SPC10] Press the space bar 10 times
Any other characters should be easily
recognisable for example CTRL-N means
press CTRL and N and LEFT-ARROW
means press the left arrow.
Any number of mnemonics can be
enclosed in brackets for example
(SA10,SPC10,SA10]
means type 10 shift A's 10 spaces and
another 10 shift A's.
Mnemonic
F5|
Symbol what to press] I Mnemonic Symbol what to press
[F6]
[F7|
FBI
[CLEAR]
HOME]
RVSON]
RVSOFF)
f5 [BLACK]
shift & f5 I (WHITE)
f7 [RED]
shift &f7 ||CYAN|
shift & CLR
/HOME I [PURPLE)
CLR/HOME
(GREEN)
CTRL & 9 IBLUE]
CTRL & 0
[YELLOW]
CTRL & 1
CTRL & 2
CTRL & 3
CTRL & 4
CTRL & 5
CTRL & 6
CTRL & 7
CTRL &
Lineage: 40p per word. E3 S
Semi display: £9.00 per single column centimetre
Ring for information on series bookings/discounts.
YOUR COMMODORE
01 -437 0699
EXT. 291
All advertisements in this section must be prepaid.
Advertisements are accepted subject to the terms and conditions
printed on the advertisement rate card (available on request).
Send your requirements to:
STUART TAYLOR
ASP LTD, 1 GOLDEN SQUARE,
LONDON W1
WARNING NOTICE
Advertisements placed in this magazine are to be in strict compliance with our standard condiWons
(copies of which conditions are available on request) and on the clear understanding that the advertiser
warrants that his advertisement(s) does not infringe any copyright or condition of sale of any interested
party in the advertised product.
Further the advertiser indemnifies the proprietors of this magazine in respect of costs, damages, or any
other claims brought against them as a result of legal action arising from the publication of the
advertisement.
Any breach of these terms or the said conditions may result in prosecution of the advertiser by the
proprietors.
SOFTWARE
COMMODORE 64 DATABASE - DATAFILE
Powerful options include: print all-selective records, delete, amend, save. load,
copy alphanumeric sort, user defined fields, memory check, total numeric
fields, multi f*eld .ntei relational, global and between limits searches, etc. Fully
menu driven with comprehensive, easy to use instructions.
CBM 64 (compiled) cassette f 7.45
CBM 64 lcomp.led> *** IWM
COMMODORE 64 WORDPRO - TEXTFILE
Powerful word processor, facilities include - large teat buffer, auto centre,
variable tab. insert, amend, delete, copy, move te«t. word count, nght justify,
paging. |Oin files, multiple file handling, print all/part text. etc. Fully dnven with
comprehensive, easy to use instructions. Great value.
CBM 64 (compiled) cassette C8.25
CBM 64 (compiled) disk c, °- 7 °
All programs with full documentation and guarantee and can be used with all
direct connect CBM 64 printers mclud-ng 1520 print /plotter. Also most
Centronics Iwith sutiable hardware intertacel. Price includes fast delivery by
(irst class post. Cheques/POs 10:
A & C SOFTWARE -
Dept. 4. 75 Oakthorpe Gardens. Tividale. West Midlands BB9 2LF
Telephone: 021 557 8596 !7-9pm)
SPANISH, ARABIC, Portugese,
Italian word processors lor CBM
64 C89 each. inc. P&P. vat extra.
Dealers welcome. DT Promotions,
Unit-F. Arndale Centre. London
SW18 4TD Tel: 01 870571 1 . Telex
8951182 Gecoms.
SENSATIONAL POSTAL
soltware bargains tor Amstrad,
Atari. BBC, Commodore (all
formats), Electron. Spectrum. For
free list send a SAE or phone
Teletex Cleckheaton 0274
875299 28 Brooklyn Court.
Bradford Road. Cleckheaton. W.
Yorks.
AFFORDABLE SOFTWARE
Chuckie Egg (c) 6.75
Winter Games (c) 7.95
Red Moon (c) 5.75
Snooker (c) 6.95
Goonies (c) 7.95
Solo Flight <c.d) . 11.95
All prices include postage and
packing. Send a S.A.E. for price
list. To order any of the above
titles send a cheque or postal
order payable to:-
J > J SOFT SALES (MAIL ORDER)
OEPT CU. 17 VERNON ROAD,
UCKFIELO, SUSSEX. TN22 5DX
BANKER 64
it you ate ted up not being able lo keep Hack o( your bank account MpmM
may be just what you are looking lor. Simple to use as it is menu driven it will hold
lull details of Credits. Debits, Standing orders and Direct Debus ar>d will auto-
matically place them .n dale order II will give you statements to screen or printer
including the 1520 plotter printer Records can be stored on bolh d.sk and tape loi
complete back-up Entry to any account is by name and Secunty codo which can
be changed as necessary. This m/c program is very good value at E8.25 disk. %*.oo
UP " RAMFILE
Keep track of your Software. Records. Stamp Collection, Addresses etc with this
easy to use menu driven tilling system Entry titles are user detmeable Powerful
options include search and amend routines Print routines allows printing of entry
title, selected entry or complete tile to any printer including the 1520 plotter Files
can be stored on both disk and tape
This m/c program is very good value at C6.2S disk, £4.00 tape.
Special Offer — Both programs £10. Disk Both programs £7.00 Tape
All prices include VAT P&P Cheques & P.O. to
RJP ELECTRONICS
27 Denham W.y, Camber. Rye. East Sussex TN31 7XP Tel: (0797) 225549
DO YOU READ ME?
Speed reading course for
children aged 10+ on
CBM 64. Cassette or disk
(1541) £10. Ch/POs or
SAE for details to:-
S. HARCOURT,
17, The Moorings,
North Lancing,
Sussex BN15 0PP
DISK AID
Menu driven utility inc (He
recovery, directory reshuffle, fast
format etc. Saves time and hassle
with the 1541. £8.95 (inc. P&P)
BARIM SOFTWARE,
4, Wellington Road.
Ashto-d. Midd. TW15 3RJ.
I SOUTH EAST KENT SOFTWARE 1
Oepl V/C P.O. Bo» 152 Orpington Kent
We stock tor Spectrum. Amslrao. Com-
modore Send SAE to- lull list and print.
Please state which Postage' Packing SOp.
overseas Cl 00
COMMODORE 64 GAMES (TAPE)
RRP OUR PRICE
Super Muey
Ind Jones
Dam busters
Spy vs Spy n
Sfcylox
Oropzone
impossible Mission
Sn'im h Qatnes
Break Fever
16.45
£6 50
£650
£7.50
£6.99
£6 99
£11 00
ISJO
£8 95
£9 95
19 9!;
£9 95
Efl K
a h
£9 95
EM H
£6 95
BUSINESS (DISK |
RRP OUR PRICE
Home Accounts £24.95 £19.95
Stock Control £24 9* WM|
Ma» List £19 95 £1550
EDUCATION
English. Malta. German. French. History
RRP £9 95 OUR PRICE £7 95
Cheques Pffl pay-* Mo J r«-.quso«
Please.
allow 2i days delivery
NEW COMMODORE 64 software
on disc and tape. I have: Karate
Champion. Winter Games. Silent
Service, Last V8, Dan Dare; and
many new games. Write lor more
intormation: N. Arntz. Osdorperweg
565 Amsterdam. Holland. Tel: 020
190669
GAMES
BLOCKBREAKER — C64
wordgame includes; Challenge
Games. Gold runs, money, prizes.
C5.75 Cheque/PO to Drive. 92
Robin Hood Lane, Birmingham
B28 0JX.
GRAPHICS
I ixii-I II
For Commodore 64
• Plan your Graphics
• Simple to use
■ 50 A3 sheets
• Programming GuMe
^ COMPUTER BITS
35 Windermere Drtve. I
TERMS
CLASSIFIED ADVERTISING
TERMS & CONDITIONS
Our terms (or new advertisers (seml-
dlsplay and lineage) are strictly pro-
form* payments until satisfactory
reference can f>« taken up (excluding
recognised advertising agendas).
Cheques and PO'i should be crossed
and made payable to:
ARGUS SPECIALIST PUBICATIONS
LTD..
and send together with the
advartlMmant to:
THE CLASSIFIED DEPT.. UM,
NO: 1 GOLDEN SQUARE. LONDON,
W1A 3AB.
There are no reimbursements tor
cancellations. Advertisements arriving
too late tor a partlclular Issue will be
Inserted In the loJowIng Issue unless
accompanied by Instruction to the
contrary.
All advertising sales are subject lo
Government regulations concerning
VAT. Advertisers are responsible tor
complying with the various legal
requirements In lorce eg: The Trade
Description ACL Ses Olacrlmlnatlon
Acl a The Business Advertisements
(Disclosure) Order 1977.
FULL TERMS « CONDITIONS Of
ADVERTISING AVAILABLE ON
REQUEST
LIBRARY
ATTENTION BBC USERS
A SUBSIDIARY OF PLATINUM GOLD
HARDWARE
• OVER 4,000 different titles available tor hire for the COM-
MODORE, SPECTRUM, BBC, AMSTRAD, ATARI and
MSX computers.
' ARCADE, ADVENTURE, EDUCATIONAL and BUSI-
NESS software too.
• HIRE PRICES from only 75p INC. P&P.
• 20% DISCOUNT off all purchase software.
■ FREE CATALOGUES.
• FREE HINTS AND TIPS.
' FAST RETURN OF POST SERVICE (if reserves are
given).
• ALL GAMES manufactures ORIGINALS with full
documentation.
' OVER 6.000 satisfied members.
" EUROPEAN members welcome.
• Fully computerised system keeps track of your order. We
pride ourselves in being the most professional Hire Library
in the United Kingdom, with staff of 1 4 who knows what the
word service means. Backed by our own software com-
pany and programmers.
MID LAND~ ZO MPU TE R~ UBR AR Y~
28 College Street, Worcester WR1 2LS. Tel: 0905 611072
Please enclose £6 tor Life Membership or send a SAE lor Iree catalogue
slating machine.
Name:
Address:
REPAIRS
COMMODORE
REPAIRS'
WHY PAY HIGH
FIXED' PRICES
FOB PROFESSIONAL ISM - Of all ihe
reoMroompenie Siniau jw
M MANCOMP WW) W MOST
PROFESSIONAL when R c*r* to tO.Kt
am a ftapful attitude" AUG 85
WHY DELAY - OUR ESTIMATES ABE
FBEE ANO WITHOUT OBLIGATION IF
YOU DO NOT LIKE OUB ESTIMATE
wt will RETURK THE C0*m.rF.H
and ref uno the postage
incurred'
MANCOMPlto
(Dept YC2)
Printworks Une.levenshulrr*.
Manchester M193JP
OPEN MON • SAT 9am to 7pm
FOR SALE
Commodore 64 — £15. Vic 20
— £12.50, Spectrum —
£10.50, OL - £30, 1541 Disk
Drives — £20, and all Com-
modore systems. Send faulty
machine with note describing
fault to:
TRIDENT ENTERPRISES
LTD
UNIT 7. WENTWORTH INDUSTRIAL
COURT. GOODWIN ROAD. BR IT WEIL,
SLOUGH TEL: 0735 21391
Ovcrten enquiries welcome.
(Above prices are exclusive ol
id VAT).
TO FILL
THIS
SPACE
RING
STUART
TAYLOR
01-437 0699
NEW STAR SG-10C PRINTER
ONLY E249 TO INCLUDE VAT & NEXT DAY
DELIVERY BY SECURIC0R
100% compatible wilh your Commodore computet
120cps drafl mode.
Tractor and friction feed standard.
Near Letter Quality mode included
192 graphic mode characters.
192 business mode characters
90 italic characters.
90 NLQ characters.
Normal 80 cpl. Condensed 136 cpl.
Enlarged 2X. 3X & 4X.
Supplied with interface/cable and mams plug READY TO GO
STRONG COMPUTER SYSTEMS
8RYMA COTTAGE. PENIEL. CARMARTHEN. 0YFE0 SA32 7DJ
TEL 102671 231246 FOR ASSISTANCE!!! C64
* BACK-UP-SYSTEMS FOR CBM-64 & VIC-20 *
The BACK-UP-BOARO Mk. 1 •» the fastest, and easiest way lo back up your tape
programs. With this board you can connect a second CBM cassette deck to your
computer. You can copy a program on the second deck while the original loads from
the first. You can back up all last loaders, data files, etc BACK-UP- BOARD Mk 1
£1000 Inc. P&P
BACK-UP-BOARD Mk 2 This new version of our famous BACK-UP-BOARD is now
proving so popular It Is outselling our original Mk I This new board now works two
ways Switched to NORMAL' ll operates as the Mk I Switched to 'GENERATE'. '64'
owners can use our special Iransler software lo regenerate a copy ol a program on the
second deck as it loads from (he first This method can produce a bettei quality copy
than the original. BACK-UP-BOARD Mk 2 & Software £14 50 mc P&P Conversion
service. Return your Mk. I Board, if purchased from us. to be modified to Mk 2 for
£450 including software & P&P
AZIMUTH HEAD ALIGNMENT TAPE by INTERCEPTOR tor 64* Use this test tape
with your tW to adjust the heads ol your decks to make a perfectly matched pair. Full
instructions and screwdriver supplied £8.50 inc P&P
ROM SWITCH/RESET BOARD. Fit this board in the expansion port of your '64' and
you can reset ALL programs. Resets programs that a standard reset swllch can't. A
socket tor a 2764 8K eprom is also fitted Full instructions supplied. £8.96 inc. P&P
Please send SAE lor more details of Ihe above products Send your cheque/PO lo
TURBOTRONIC
46 Rlpon St., Parkinson Lane, Halifax, West Yorkshire HX1 3UG.
Tel: (0422) 52020
(Europe add 50p outside Europe add £1.50)
We use only
10% of our
fSi mental
potentials
Tf««t at* the wdi ol Albert En.te-o.
Bie greater phttiost o< recam i.mei
L Ron MvBba'tfi discoveries Hi
i-MO or e-o "i-id prove today mat EMMIn
"""his nook -OIANETICS: Tito Modern
Scieix* ol Mental HaelttT L Ron Mub-
Mro aiubi on* mora gianl Heo In irui
direction.
Ha revean no* anyone can use hi* 01s-
covenes 10 isWeie ma aiacl barriers Dial
have so tar prevented paopla from using
the* n\ent«i potent** 10 the hih.
Mora and mo«a pood* from al wa*s
of We use Oiar*»esiecrir*icw today.
Tha many —man reports on man suc-
cau ara in* Mat prooT ol the quality ol
«*■* book.
F.nd our "or yourse* Order your copy
or viii ramarkaont boo* today.
Pnoe O.M papaibac* C17S0 nard-
Dacft. M««a cMwjoea and POa payable lo
S.M.f. Sand to Chi-cn W SeienWogy
Saint ran Foundanoo. FREEPOST IVC t|
East Orlnsteod. Suua. RH19 4ZA (no
Mamp iequ*ed).
Super Breaker
Back-Up Board
For the Commodore 64. CBM 128 and
ViC-20. When a second CBM lype cas-
sette umi is connected lo ihe board il
will make security back-up copies of
cassetie based software, inicudmg
Turbo/Fast Loaders. Basic and/ or
Machine Code and Data Files No
additional software is needed. Very
User Friendly, the back-up copy is
made on the second cassette while the
original is loading on the first. Price at
£8.95 Plus P&P
RESET CARTRIDGE for CBM 64 This
cartridge will reset all. yes all. memory
resident programs. Including all pro-
grams whore standard reset switches
fail. Price £7.96 • P&P
64 REPAIRS Fast reliable repairs, sii
months warranty on replaced parts.
£14 95 to £28. 75 inc. parts, labour. P&P.
insurance • VAT.
P&P 55p UK (Europe add £1.00. else-
where add £2.00). Send cheque/postal
order, or a stamp (or details, to:
C. Kent. 26 Northcape Walk,
Corby. Northanls. NN18 9DQ.
For enquiries telephone (0536) 742622
FOR HIRE
Hire & Exchange Software.
Ejrhiatr. your software! Phone or
send lilt ol your software and ask
for details. Software hire! No
membership charge. P4P free. Hire
tapes from £1.50. Phone for details.
TAP Software, 4 Mai ate Road,
Newland. Dm, Seiby. North Vorks.
Tel: 0757 611007.
MOONRAKER £6.95
CBM64 Space Game features fast
• Fly-into Rolling Radar Display
e Intra Red Target Screen
Send your name, addraaa a PO cheque to
J A J Gllmour Ltd..
Dept YCt*6, 4 Copse Close. Lit*.
Hampshire GU33 7EW, England.
Tel: 0730-893430.
GADGET 64 £5.95
This 100', machine code CBM64
cassette utility offers: Append, Delete.
Renumber (Including Goto. Gosub. etc.)
Satisfyingly simple to use. Send your
Name. Address & PO or Cheque tor
£5.95 (P&P Free) to:
J & J Gllmour Ltd.,
Depi -C1B6. a Copse Close. Llss,
Hampshire GU33 7EW. England.
ACCESSORIES
PERIPHERAL BARGAINS
Ouickshol II Joystick £8.75
Gunsho! II Joystick £8.75
C- 16 adaptor (tor above) £3.95
Reset switch (VIC 207
CBM 64) £3.95
Will reset all m-code programs.
Price includes Basic recovery
program.
Copier CP! Digital interlace.
Copies all Turbos, m/code, etc
IC controlled. No software
needed. Just type load. II it
loads, CPl will copy it. Requires
second datasetle. 12 months
guarantee C9.50.
Free P&P UK, Europe add
£1.50, resi add £2.50.
Send Ch/PO to:
DATALINE
246 Horbury Rd.,
Wakefield WF2 8RE.
SOFTWARE
APPLICATIONS
HOME ACCOUNTS
Put your house in order?
Probably home computing's
best use! Comprehensive
coverage of bank accounts.
Credit cards, HP in-built
accuracy check. Reocrds all
transactions. Projects cash-
flow for any period ahead.
Available for C16 CBM64 or
VIC-20. £8.45 or free details
from:
Discus Software
Freepost,
Beach Approach
Brixham TQ5 8BR
Tel: 08045 55532
+57 oW.
FOR HIRE
COMMODORE 64 cassette
library. Hire latest games and
educational software, only one
price £1.50 per cassette 7 days
hire. Details S.A.E. please: C.C.L.,
19 Darrell Way, Abingdon. OX14
FOR SALE
FOR HIRE
BUY OR SELL your unwanted
software, books, and hardware. We
put you directly in contact wilh
each other in your area. Details:
Second Hand Computer Sales
Agency. 38, Bowling Alley Walks,
Dorchester. Dorset. Tel (0305)
64849 (24 hrs).
CBM64 S6FTWARE DISCOUNTS
Spy v Spy 2 £7.30, Kennedy Approach
£10 95. Sabre Wolf £7 30. Underwurlde
£7.30. Hackot £7 20. Rocky Horror
Show £6 66 Cheque/PO lo:
SoUware Unlimited. PO Box 65.
6 Thurland St. Nottingham NG1.
Tel: (0602) 470897.
Full 1.11 -
*itn order
BRITISH BATTLESHIPS 1892-
1960 CBM 64 Four preferential/
educational cassette volumes
C2.85 each or information from C.
Lewis. 84 Station Road, Wraysbury
Berks TW19 5NH
DONT LEAVE IT TO CHANCE!
GIVE YOUR BUSINESS A BOOST
BY ADVERTISING IN
YOUR COMMODORE
PHONE STUART TAYLOR ON 01-437 0699
FOR DETAILS
YOUR COMMODORE — CLASSIFIED ADVERTISEMENT - ORDER FORM
Advertise nationally in these
columns for only 40p per word (min
charge 15 words). Simply print your
message in the coupon and send
with your cheque or postal order
made payable to Argus Specialist
Publications Ltd to:
STUART TAYLOR
ASP LTD, 1 GOLDEN SQUARE,
LONDON W1
Tel: 01-437 0699
Name....
Address.
ADVERTISERS PLEASE ADD 15% VAT Tel n0 (day)
Please place my advert in YOUR COMMODORE for issues.
Please indicate no. of insertions required.
jdyYOU CHOOSE
J^T THE ACTION IN
HtfERC
FROM PAUL WOAKES
AUTHOR OF ENCOUNTER!
Mercenary - a unique combination of flight
simulation, adventure and arcade fun. You choose
the action.
There is complete freedom of movement in
a truly three-dimensional vector-graphic environ-
ment Graphics of exceptional speed create a
very realistic experience.
You'll never play the same game twice.
Random elements attempt to seal your fate.
Your interaction is crucial.
Mercenary presents an absorbing challenge
that you will accept again and again.
Hi
i
-I H
■ #
1 1 "■*""[
i N N
IITIAL REL
DR COMMODORE
8K 800 XL 130 HE
DISK £12.95
CASSETTE £9.95 DISK £12.95
NOVAGEN SOFTWARE LTD: SALES 142 ALCESTEB ROAD BIRMINGHAM BlWi!
- the sophisticated spreadsheet !
Easy to learn, easy to use - something that can't be said of many business programs.
But it's true of all the programs in the BUSICALC series.
BUSICALC 3 can handle all sorts of jobs - budgets, expenditure analysis, stock lists
price lists, and product costing are just a few of the possibilities. Three-dimensional
formulae automatically access data stored on disk, so that you can easily pull
together information from several different sheets and summarise or manipulate it.
It's simple to transfer data to other programs such as Easy Script. And you can use
virtually any printer with BUSICALC 3, whether dot matrix or daisy wheel.
Commodore or non-Commodore.
For the CBM 64 and PET/CBM 4000 & 8000 series.
Available through dealers or from:
Supersoft, Winchester House, Canning Road, Harrow HA3 7SJ
Phone 01-861 1 166 for more details and a free catalogue.